web-dev-qa-db-fra.com

Est-ce que je verrai un impact négatif sur les performances si j'utilise des appels d'API natifs tels que get_the_title () au lieu de $ post-> post_title?

Supposons que j'ai déjà reçu l'objet $ post dans le cadre d'un processus précédent consistant à effectuer une boucle dans un tableau d'identifiants et à utiliser get_post () sur chacun d'eux, en stockant l'objet résultant dans un tableau.

Plus tard, je veux parcourir ce tableau et faire quelque chose avec chaque message. J'ai déjà un objet $ my_post, donc je pourrais echo $my_post->post_title, ou je pourrais avoir de la fantaisie et echo apply_filters('the_title', $my_post->post_title, $my_post->ID) ou je pourrais simplement utiliser la get_the_title($my_post->ID) native.

Voici où ma question de performance intervient. Quelle est la fiabilité du cache natif (je ne parle pas d'un plugin fou, mais simplement de la wp_cache_get($post_id, 'posts') intégrée, etc.)?

Je suppose que ce que je demande, c’est: quelle est la probabilité que get_the_title () plonge dans la base de données et saisisse à nouveau le message, par opposition à l’utilisation du cache, et serais-je mieux placé du point de vue des performances données d'objet que j'ai déjà? Il est clair que vous obtenez plus de sucre si vous utilisez les éléments intégrés. Mais cela risque-t-il de revenir à la DB?

5
Tom Auger

Les balises de modèle reposent sur $post global (à moins que vous ne fournissiez explicitement quelque chose d'autre à ceux qui la prennent en charge. Donc soit:

  • ils obtiennent quelque chose de cette variable (aucune raison d'y aller dans la base de données)

  • ou ils ne le font pas (alors ils échouent parce qu'ils n'ont aucune idée de ce que vous voulez)

Dans la plupart des circonstances normales, il n'y a aucune raison de s'inquiéter de l'impact des balises de modèle. Cela n’intervient que si vous commencez à gérer un nombre incroyable de publications et/ou à appliquer des filtres trop complexes.

Mise à jour après discussion dans les commentaires

get_post() essaie toujours d'appeler le cache avant d'appeler la base de données. Le cache est purgé par les fonctions qui modifient les publications de manière explicite (voir clean_post_cache() ) ou expire naturellement.

4
Rarst