我正在编写我的最近评论小部件,并使用$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缓存有什么区别呢?这个似乎要在数据库中存储数据。
SO网友:onetrickpony
wp_cache_set/add
函数将为您存储数据,直到您手动从缓存中删除数据,或者缓存收集器被销毁,以先发生的为准。
默认情况下,WP将此数据存储在数组变量中,因此收集器在每次页面加载时都会被销毁。
请记住在修改检索到的数据的操作之后刷新缓存。在您的情况下,对于注释,您可能希望在添加新注释时清除缓存:
add_action(\'comment_post\', function(){
wp_cache_delete(\'mycomments\');
});