如何防止查询到的帖子被添加到缓存?

时间:2016-08-22 作者:dan9vu

我正在学习caching parameterssingle.php 模板:

echo count($wp_object_cache->cache[\'posts\']);

$query = new \\WP_Query([
  \'post_type\' => \'post\',
  \'cache_results\' => false,
  \'posts_per_page\' => 5,
  \'ignore_sticky_posts\' => true
]);

echo \'<br>\' . count($wp_object_cache->cache[\'posts\']);
结果:

3
7
不知怎的cache_results 参数不起作用。我错过什么了吗?

我正在使用:

WordPress 4.6版

1 个回复
最合适的回答,由SO网友:birgire 整理而成

posts数组导致WP_Query 已映射到get_post() (herehere) 使用:

$this->posts = array_map( \'get_post\', $this->posts );
这似乎是在向对象缓存添加POST,即使cache_results 参数设置为false 在里面WP_Query.

get_post() 功能(here) 我们有:

$_post = WP_Post::get_instance( $post );
对于以下情况:$post 都不是WP_Post 或对象实例。

这个WP_Post::get_instance method 包含wp_cache_get()wp_cache_set() 呼叫。

这可以解释你在例子中看到的行为。

相关推荐

Which cache is kicking

我一直在为一个从另一个开发者那里继承下来的网站而挣扎。我的主要问题是,我在模板的css文件中所做的更改并没有立即得到响应,这表明某种缓存正在发挥作用。我检查的是。这个。任何缓存指令的htaccess文件</任何可能被激活的缓存WordPress插件</主机实现的任何缓存功能</Cloudflare或任何其他CDN</我尝试了不同的浏览器和计算机,所以缓存是服务器端的您可以想象,上面的任何一项都没有启用,但我对css的更改需要几个小时才能看到。我在任何方面都不是WordPress专家