W3 total cache - refresh cache secara terprogram [ditutup]


21

Saya sedang membangun situs web Digg like di WordPress.

Setelah menginstal W3 Total Cache, saya perhatikan elemen-elemen tertentu seperti jumlah suara (dan id pemilih) per posting di-cache meskipun mereka seharusnya tidak (setidaknya tidak setelah pengguna memilih artikel). Saya berasumsi bahwa tidak mungkin untuk mencegah elemen-elemen tertentu dalam sebuah halaman tidak di-cache (atau bukan?), Jadi saya berpikir untuk memicu refresh cache halaman secara terprogram.

Ada saran?

Jawaban:


21

jika Anda ingin membersihkan cache, Anda dapat melakukannya: plugin memiliki fungsi untuk itu

<?php 

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

?>

dan Anda hanya perlu menyebutnya seperti ini:

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

dan itu pada dasarnya adalah jawaban untuk pertanyaan dalam judul "cache refresh secara terprogram"


12
Bisakah Anda jelaskan secara eksplisit bagaimana Anda membuat instance objek $ w3_plugin_totalcache?
adamdport

3
Sebagian membantu, bagaimana Anda membuat instance variabel itu?
thephpdev

10

W3 Total Cache mendukung caching fragmen. Dari FAQ:

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 -->

Terima kasih, Rast. Tetapi ketika saya menggunakan salah satu dari contoh di atas, saya mendapatkan kesalahan Parse error: kesalahan sintaks, tak terduga '<'
user1567

@ user1567 Anda mungkin memiliki ketidakcocokan dengan <?php ?>tag pembuka / penutup . Saya belum menggunakan ini sehingga tidak memiliki cuplikan praktis untuk ditampilkan.
Paling lambat

Untuk satu hal, saya ingin memuat functions.php tanpa menyimpannya. Kode berikut dalam functions.php memicu kesalahan di atas: <? Php <! - mclude -> require_once (functions2.php) <! - / mclude ->?> Apa yang salah dengan kode tersebut?
user1567

1
@ user1567 menurut contoh-contoh itu harus seperti ?><!-- mclude -->functions2.php<!-- /mclude --><?php(saya pikir :)
Rarst

Tidak dapat mulai mengerjakan caching fragmen. Masalah saya dijelaskan di sini: stackoverflow.com/questions/31125413/…
JackTheKnife

10

Untuk menyiram satu halaman dengan mengirim id di w3tc v0.9.3 saya menemukan ini berhasil:

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

1
Di mana Anda akan meletakkan kode ini? Ini terlihat seperti dijalankan pada setiap pemuatan halaman (untuk ID itu). Apakah tidak ada cara untuk mencegah caching sepenuhnya?
s_ha_dum

@s_ha_dum Bisakah Anda mencari tahu dengan kail mana kita dapat menggunakan kode ini?
Prafulla Kumar Sahu

Kait tambahan tidak diperlukan jika acara kode khusus / plugin Anda dilampirkan untuk dieksekusi setelah plugin dimuat, yang biasanya merupakan kasus. Semua fungsi yang tersedia ada di w3-total-cache-api.phpdir plugin W3TC.
Walf

Terima kasih, ini sangat membantu saya sekarang pada Desember 2018. Saya perlu cara untuk menyiram cache halaman beranda begitu klien mengunjungi halaman tertentu (halaman pengaturan untuk ditampilkan ketika agen tersedia). Ini sangat berguna untuk halaman tertentu, tapi alangkah baiknya jika ada fungsi yang mem-flush SEMUA cache seperti Purge All Caches!
Jordan Carter

9

Solusi Bainternet sepertinya tidak berhasil untukku.

Saya berhasil menggunakan potongan alternatif ini dalam sebuah plugin, dimuat di tindakan admin_init :

// 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>');
}

Semoga ini bisa membantu seseorang di luar sana.


Saya dapat mengkonfirmasi bahwa solusi kevinlearynet bekerja dengan W3 Total Cache versi 0.9.2.4. Itu rusak untuk plugin saya setelah upgrade itu, dan ini berhasil. Terima kasih! Paul.

2
Saya mencoba menjalankan ini dari baris perintah. Bisakah saya bertanya bagaimana Anda memuat kelas W3_Plugin_TotalCacheAdmin? Saya mencoba membutuhkan wp-load.php tetapi tidak berhasil.
adamdport

5

Tidak satu pun di atas berfungsi untuk saya di plugin saya. Namun ini berhasil! Dikonfirmasi bekerja untuk versi 0.9.2.4 dari w3tc.

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

Saya melakukan "$ wpdb-> get_results (" SELECT sb_settings. f_fb_app_id, sb_settings. f_fb_secretFROM sb_settings");" dan terkejut nilai-nilai f_fb_secret dan f_fb_app_id sama setiap kali. Itu jelas w3tc cache hasil pencarian. Jadi saya menambahkan flush dbcache di halaman modifikasi saya untuk tabel sb_settings.

Jika Anda ingin menghapus cache halaman, gunakan saja w3tc_pgcache_flush sebagai gantinya.


Saya ingin orang yang kalah mengatakan mengapa dia kalah. Apakah ada yang salah dalam jawaban saya?
Elrinth

0

Gunakan cuplikan ini untuk memastikan PHP Anda berjalan terlepas dari apakah caching aktif atau tidak. Ya, Anda harus menulis / memanggil fungsi Anda dua kali.

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


(Saya pikir) begini caranya:

  • Persyaratan mfunc menggantikan tag php.
  • Jika caching MATI , php di dalam mfunc komentar muncul di markup Anda sebagai komentar HTML. <!-- mfunc echo "hello?"; -->Ingatlah ini tergantung pada seberapa senang Anda orang melihat PHP Anda (hanya terjadi saat caching mati).
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.