web-dev-qa-db-fra.com

Comment optimiser plusieurs appels WP_Query () sur une page?

Le site actuel que je construis a une page d'accueil qui contient environ 10 instances de WP_Query (). Certains d'entre eux vont tirer une série de messages, tandis que d'autres ciblent un seul poste en fonction de leur numéro d'identification.

Comment dois-je optimiser les vitesses de chargement des pages lorsque je traite autant d'instances de WP_Query ()? L'utilisation d'un plugin de mise en cache suffit-elle? Y a-t-il autre chose que je devrais faire en plus? Ou ne devrais-je même pas m'en inquiéter, car 10 requêtes de base de données n'entraîneront pas de baisse significative des performances?

1
Evster

Il n'y a jamais une réponse magique aux questions de performances générales. C'est comme choisir un véhicule - le meilleur choix pour une personne ou une situation peut être un mauvais choix pour une autre. Ici plus précisément, c'est encore plus fin: la meilleure réponse pour une requête peut-être même pas la meilleure pour une autre! Il n'y a pas assez d'informations ici pour même donner de bons conseils, pour de nombreuses raisons. Parmi eux:

  • Spécificités de la requête; deux requêtes peuvent être radicalement différentes en termes de performances, de sorte qu'une peut être laissée seule alors qu'une autre doit utiliser un transitoire.
  • À quelle fréquence les données vont-elles changer? une requête devrait peut-être être mise en cache indéfiniment avec un rafraîchissement après la mise à jour, tandis qu'une autre ne devrait pas du tout être mise en cache.
  • Si la mise en cache pleine page sera présente ou non
  • Que vous utilisiez ou non Memcached (ou similaire)
  • La taille des tables de poste et de taxonomie

La meilleure chose à faire est de l’implémenter et de voir comment se portent vos performances SQL en utilisant le plugin Debug Bar ou similaire, puis de prendre des décisions ou de poser des questions plus pointues sur la base de ces données. Ce serait également une bonne idée de prendre du recul et de vous demander si l'une des requêtes pouvait être combinée, puis de séparer les publications à l'aide de PHP.

À tout le moins, je peux offrir ceci: il y a rarement une raison de ne pas utiliser une forme de mise en cache de page complète, ce qui peut rendre ce que vous faites ici un peu moins important en fonction de la durée de la mise en cache de la page. Mes solutions préférées pour cela sont Vernis , WP Super Cache , ou Batcache , selon l’architecture du serveur.

J'espère que cela peut au moins vous orienter dans la bonne direction et vous aider à décoller!

2
Matthew Boynes