Wp_cache应该是如何工作的,它是否有助于提高性能?

时间:2012-04-11 作者:Pierre

我正在编写我的最近评论小部件,并使用$wpdb->get\\u results,我不想使用缓存,这样它就不会在每次加载页面时都执行查询,所以我使用了:

$comments = wp_cache_get(\'mycomments\');
if ($comments == false) {
    $query = //some sql stuff
    $comments = $wpdb->get_results($query);
    wp_cache_set(\'mycomments\', $comments);
}
//then use $comments
我使用WP Cache Inspect插件检查它是否工作,我尝试在WP\\u Cache\\u set中以两种方式设置$expire值“9999”和9999,并在两次测试之间删除了缓存,但它似乎对我不起作用,我对一篇文章发表了评论,它在最近的评论中立即显示出来,因此它似乎在9999秒内没有缓存查询,那么这应该是怎么回事,还是我做错了什么?

提前谢谢你。

编辑:我在检查法典还有Transients API 但限制为45个字符,那么这和wp\\U缓存有什么区别呢?这个似乎要在数据库中存储数据。

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

在WordPress v2中。5+对象缓存不是持久的。它会将内容保存在内存中,但对于跨页面加载的持久缓存,您需要一个插件,请参见此处:

http://codex.wordpress.org/Class_Reference/WP_Object_Cache#Persistent_Caching

或者,使用持久的瞬态。标识符的长度必须小于等于45个字符,但附加到该标识符的数据可以更长。请记住,不建议以这种方式存储大量数据。

SO网友:onetrickpony

wp_cache_set/add 函数将为您存储数据,直到您手动从缓存中删除数据,或者缓存收集器被销毁,以先发生的为准。

默认情况下,WP将此数据存储在数组变量中,因此收集器在每次页面加载时都会被销毁。

请记住在修改检索到的数据的操作之后刷新缓存。在您的情况下,对于注释,您可能希望在添加新注释时清除缓存:

add_action(\'comment_post\', function(){
  wp_cache_delete(\'mycomments\');
});

结束