问题描述
我正在 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(#替换为 @) 。