问题描述

我正在 WordPress 中建立一个 Digg 的网站。

在安装 W3 Total Cache 之后,我发现某些元素如每个帖子的投票数 (和投票 ids) 被缓存,即使它们不应该是 (至少不是在用户投票的文章之后) 。我认为不可能阻止某个页面中的特定元素被缓存 (或者是否)?所以我想到以编程方式触发页面缓存刷新。

有什么建议么?

最佳解决方案

如果你想刷新缓存,你可以这样做:插件有这个功能

<?php

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

?>

你只需要这样调用它:

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

这基本上是题目 「缓存刷新编程方式」 的问题的答案

次佳解决方案

W3 Total Cache 支持片段缓存。从常见问题解答

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

第三种解决方案

Bainternet 的解决方案似乎不适合我。

我在插件中成功地使用了这个替代代码片段,并在 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>');
}

希望这有助于某人在那里。

第四种方案

要在 w3tc v0.9.3 中通过 post id 刷新单个页面,我发现这个工作:

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

第五种方案

以上这些都不适合我的插件。但是这样工作!确认为 w3tc 版本 0.9.2.4 。

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

我做了一个 「$ wpdb-> get_results(」sb_settings f_fb_app_id sb_settings sb_settings f_fb_secret sb_settings「); 并且令人惊讶的是,值 f_fb_secret 和 f_fb_app_id 是相同的每次。显然 w3tc 缓存查询的结果。所以我在 sb_settings 表的修改页面中添加了一个 dbcache flush 。

如果要清除页面缓存,那么只需使用 w3tc_pgcache_flush 。

参考文献

注:本文内容整合自 google/baidu/bing 翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:gxnotes#qq.com(#替换为 @) 。