W3 toplam önbellek - programlı önbellek yenileme [kapalı]


21

WordPress'te bir Digg benzeri web sitesi yapıyorum.

W3 Total Cache kurulduktan sonra, gönderim başına oy sayısı (ve seçmen kimlikleri) gibi bazı öğelerin önbelleğe alınmaması gerekmesine rağmen (en azından bir kullanıcı bir makaleye oy verdikten sonra) farkettim. Bir sayfadaki belirli öğelerin önbelleğe alınmasının önlenmesinin mümkün olmadığını varsayıyorum (veya öyle mi?), Bu nedenle programlı olarak sayfa önbelleği yenilemeyi tetiklemeyi düşündüm.

Baska öneri?

Yanıtlar:


21

önbelleği temizlemek istiyorsanız, bunu yapabilirsiniz: eklentinin bunun için işlevleri vardır.

<?php 

flush_pgcache()  //page cache
flush_dbcache()  // database cache
flush_minify()  // minify cache
flush_all() //all caches

?>

ve sadece buna böyle demelisin:

<?php 
 $w3_plugin_totalcache->flush_all();
?>

ve bu temelde "programsal olarak önbellek yenileme" başlığındaki sorunun cevabı.


12
$ W3_plugin_totalcache nesnesini nasıl başlattığınızı açıkça açıklayabilir misiniz?
adamdport

3
Kısmen yararlı, bu değişkeni nasıl başlattınız?
thephpdev,

10

W3 Toplam Önbellek, parça önbelleğe almayı destekler. SSS’den:

How do I implement fragment caching? 

Edit your templates to with the following syntax to ensure that dynamic features remain so:

Example 1:
<!-- mfunc any PHP code --><!-- /mfunc -->

Example 2:
<!-- mfunc -->any PHP code<!-- /mfunc -->

Example 3:
<!--MFUNC           -->
                                      echo rand();
<!--/mfunc -->

Example 4:
<!-- mclude path/to/file.php --><!-- /mclude -->

Example 5:
<!-- mclude -->path/to/file.php<!-- /mclude -->

Rast, teşekkürler. Ancak yukarıdaki örneklerden herhangi birini kullandığımda, bir hata alıyorum Ayrıştırma hatası: sözdizimi hatası, beklenmeyen '<'
user1567

@ user1567 muhtemelen açılış / kapanış <?php ?>etiketleriyle uyumsuzluğunuz vardır . Bunları henüz kullanmamıştım, bu yüzden göstermek için pratik snippet'im yok.
Rarst

Birincisi, önbelleklemeden functions.php dosyasını yüklemek istiyorum. Functions.php dosyasındaki şu kod yukarıdaki hatayı tetikledi: <? Php <! - mclude -> needs_once (functions2.php) <! - / mclude ->?> Kodda yanlış olan ne?
kullanıcı1567

1
@ user1567 örneklere göre şöyle bir şey olmalı ?><!-- mclude -->functions2.php<!-- /mclude --><?php(bence :)
Rarst

Parça önbelleğe alma işe almak mümkün değil. Burada açıklanan sorunum: stackoverflow.com/questions/31125413/…
JackTheKnife

10

Tek bir sayfayı w3tc v0.9.3 içindeki kimliğe göre yıkamak için şunu işe yaradım:

if (function_exists('w3tc_pgcache_flush_post')){
 w3tc_pgcache_flush_post($post_id);
}

1
Bu kodu nereye yerleştirirsiniz? Bu, her sayfa yüklemesinde çalışıyor gibi görünüyor (bu ID için). Tamamen önbelleğe almayı önlemenin bir yolu yok mu?
s_ha_dum

@s_ha_dum Bu kodu hangi kanca ile kullanabileceğimizi bulabilir misiniz?
Prafulla Kumar Sahu

Özel kodunuz / eklentiniz, eklentiler yüklendikten sonra yürütmek için iliştirirse, genellikle de geçerli olan ekstra kancalara gerek yoktur. Mevcut tüm fonksiyonlar w3-total-cache-api.phpW3TC'nin eklenti dizininde bulunur.
Walf

Teşekkürler, bu benim için Aralık 2018’de bana yardımcı oldu. Müşteri belirli bir sayfayı ziyaret ettiğinde (bir aracı kullanılabilir olduğunda görüntülenecek bir ayarlar sayfası), ana sayfanın önbelleğini temizlemenin bir yoluna ihtiyacım vardı. Bu, belirli sayfalar için çok kullanışlıdır, ancak Tüm Önbellekleri Temizle gibi TÜM önbellekleri temizleyen bir işlev olsa iyi olurdu!
Jordan Carter

9

Bainternet'in çözümü benim için işe yaramadı.

Admin_init eyleminde yüklü olan bu alternatif snippet'i bir eklenti içinde başarıyla kullanıyorum :

// Clear all W3 Total Cache
if( class_exists('W3_Plugin_TotalCacheAdmin') )
{
    $plugin_totalcacheadmin = & w3_instance('W3_Plugin_TotalCacheAdmin');

    $plugin_totalcacheadmin->flush_all();

    echo __('<div class="updated"><p>All <strong>W3 Total Cache</strong> caches successfully emptied.</p></div>');
}

Umarım bu dışarıdaki birine yardım eder.


Kevinlearynet'in çözümünün W3 Total Cache sürüm 0.9.2.4 ile çalıştığını onaylayabilirim. Bu güncellemeden sonra benim eklenti için kırdı ve bu bir tedavi çalışıyor. Teşekkür ederim! Paul.

2
Bunu komut satırından çalıştırmaya çalışıyorum. W3_Plugin_TotalCacheAdmin sınıfını nasıl yüklediğinizi sorabilir miyim? Boşuna wp-load.php istemeyi denedim.
adamdport

5

Yukarıdakilerin hiçbiri benim eklenti benim için çalıştı. Ancak bu çalıştı! W3tc'nin 0.9.2.4 sürümü için çalışmayı onayladı.

if (function_exists('w3tc_dbcache_flush')) { w3tc_dbcache_flush(); }

Bir "$ wpdb-> get_results (" SELECT sb_settings. f_fb_app_id, sb_settings. f_fb_secretFROM sb_settings");" yaptım ve f_fb_secret ve f_fb_app_id değerleri her zaman aynıydı. Açıkçası w3tc sorgunun sonucunu önbelleğe alıyordu. Böylece sb_settings tablosu için değişiklik sayfamda bir dbcache floşunu ekledim.

Sayfa önbelleğini temizlemek istiyorsanız, bunun yerine sadece w3tc_pgcache_flush kullanın.


İstenmeyen kişinin neden reddettiğini söylemesini istiyorum. Cevabımda yanlış bir şey var mı?
Elrinth

0

Önbelleğin açık veya kapalı olmasına bakmaksızın PHP'nizin çalıştığından emin olmak için bu pasajı kullanın. Evet, fonksiyonunuzu iki kere yazmanız / çağırmanız gerekir.

<!-- mfunc echo 'caching ON'; --><?php echo 'caching OFF'; ?><!-- /mfunc -->


(Bence) bu nasıl çalışır:

  • Mfunc koşullu php etiketlerinin yerini alır .
  • Önbelleğe alma KAPALI ise , mfunc yorumların içindeki php, işaretlemenizde HTML yorumları olarak görünür. <!-- mfunc echo "hello?"; -->İnsanların PHP'nizi görmeleri için ne kadar mutlu olduğunuza bağlı olarak bunu aklınızda bulundurun (yalnızca önbellek kapalı olduğunda gerçekleşir).
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.