web-dev-qa-db-fra.com

Comment wp_cache est-il censé fonctionner et contribue-t-il à la performance?

Je codais mon widget de commentaires récents, et j'utilisais $ wpdb-> get_results et je voulais utiliser le cache pour ne pas exécuter la requête à chaque chargement de la page. J'ai donc utilisé:

$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

et j'ai utilisé WP plug-in Cache Inspect pour vérifier son fonctionnement, j'ai essayé de définir la valeur $ expire dans wp_cache_set de deux manières, '9999' et 9999, puis j'ai supprimé le cache entre les deux tests, mais cela ne semble pas pour travailler pour moi, j'ai commenté un article et il apparaît immédiatement dans les commentaires récents. Il semble donc que la requête ne soit pas mise en cache pendant 9999 secondes. Est-ce ainsi que cela est censé fonctionner ou si je fais quelque chose de mal?

et merci d'avance.

EDIT: Je vérifiais le codex, il y a aussi API Transients mais limité à 45 caractères, alors quelle est la différence entre ceci et wp_cache? celui-ci semblait stocker des données dans la base de données.

4
Pierre

Dans WordPress v2.5 +, le cache d'objet n'est pas persistant. Cela économisera des choses en mémoire, mais pour la mise en cache persistante lors du chargement de pages, vous aurez besoin d'un plugin, voir ici:

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

Vous pouvez également utiliser des transitoires persistants. L'identifiant doit comporter 45 caractères au maximum, mais les données associées à cet identifiant peuvent être plus longues. Gardez à l'esprit que le stockage de très grandes quantités de données de cette manière n'est pas recommandé.

4
Tom J Nowell

Les fonctions wp_cache_set/add vont stocker les données pour vous jusqu'à ce que vous les supprimiez manuellement du cache ou que le collecteur de cache soit détruit, selon la première éventualité.

Par défaut, WP stocke ces données dans une variable de tableau afin que le collecteur soit détruit à chaque chargement de page.

N'oubliez pas de vider le cache après les opérations modifiant les données que vous avez récupérées. Dans votre cas, pour les commentaires, vous voudrez peut-être vider votre cache lorsqu'un nouveau commentaire est ajouté:

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