web-dev-qa-db-fra.com

Quelqu'un peut-il expliquer la mise en cache de Wordpress et quel est le meilleur dans mon scénario?

Je crée un site Web comportant deux groupes d'utilisateurs de base: les abonnés et les éditeurs. Bot peut créer des publications via un formulaire personnalisé à l'aide de wp_insert_post(), mais les éditeurs sont autorisés à marquer une publication comme étant privée, partageant ainsi une publication unique uniquement avec d'autres éditeurs.

Comme Wordpress filtre déjà les publications privées hors de la boucle pour ceux qui se trouvent en dessous des rédacteurs, je me demande en quoi cela affectera ma mise en cache, car (pour autant que je sache), je vais avoir deux caches: une pour afficher les publications pour les Abonnés et une pour messages aux rédacteurs qui inclut également les messages privés.

Dans la boucle, j'utilise:

  • current_user_can(): pour inclure ou exclure du contenu de publication basé sur Abonné/Editeur/Administrateur
  • get_post_status(): pour inclure ou exclure un contenu de publication en fonction de la publication "privée" ou "publiée"
  • get_post_meta(): pour récupérer divers champs personnalisés

En ce moment, j'utilise 26 requêtes en 0.198 secondes sur index.php et 28 requêtes en 0.193 secondes sur single.php.

Comment pourrait-on effectivement cacher cela? Je n'ai pas encore de plug-in de mise en cache, mais j'ai accès à xCache.

Merci beaucoup!

3
FLX

Donc, votre problème est que vous voulez mettre en cache 2 boucles, WordPress fait des tâches cachées pour mettre en cache les boucles. Ce que vous pouvez faire est soit d'activer un plugin comme W3 Total Cache , mais si vous avez vraiment besoin de mettre en cache des données pour certaines fonctionnalités, certaines fonctions sont disponibles./méthodes qui vous permettront d'utiliser ces systèmes de mise en cache sans avoir à plonger dans la documentation.

Donc, il y a trois fonctions de base que vous pourriez avoir besoin de vérifier, tout d'abord vous devez wp_cache_set , qui utilisera l'idée de groupes d'informations de mise en cache et les clés, de sorte que vous puissiez récupérer les informations ultérieurement avec le wp_cache_get , et lorsque vous avez terminé avec ces informations, et que vous êtes sûr de ne pas avoir besoin de plus tard, vous pouvez simplement utiliser wp_cache_delete pour effacer ces données de votre "système" de mise en cache.

Juste en tête, ces fonctions ne sont pas une mise en cache persistante, elles seront supprimées lors d'une nouvelle requête, mais elles sont enregistrées en mémoire, ce qui signifie qu'elles sont très rapides. Vous stockez donc les informations que vous utiliserez ultérieurement dans la base de données.

J'ai mis quelques liens dans le texte du trac où ces fonctions sont définies, mais si vous le souhaitez, vous pouvez consulter la référence WP_Object_Cache et vérifiez comment ils peuvent être utilisés, et il existe également de bonnes recommandations.

0
Webord