web-dev-qa-db-fra.com

Comment empêcher les publications interrogées d'être ajoutées au cache?

J'apprends/ paramètres de mise en cache et j'ai essayé ceci dans le modèle single.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']);

Le résultat:

3
7

D'une manière ou d'une autre, le paramètre cache_results n'a pas fonctionné. Est-ce que je manque quelque chose?


J'utilise:

  • WordPress version 4.6.
  • Vingt-quinze thèmes.
  • Pas de plugins/services tiers.
2
MinhTri

Le résultat du tableau posts dans WP_Query est associé à get_post() ( ici et ici ) avec:

$this->posts = array_map( 'get_post', $this->posts );

et cela semble ajouter des publications auobject cachemême si l'argument cache_results est défini sur false dans WP_Query.

Dans la fonction get_post() ( here ), nous avons:

$_post = WP_Post::get_instance( $post );

pour le cas où $post n'est ni un WP_Post ni une instance d'objet.

La WP_Post::get_instanceméthode contient les appels wp_cache_get() et wp_cache_set().

Cela pourrait donc expliquer le comportement que vous voyez dans votre exemple.

2
birgire