8722 sujets

Développement web côté serveur, CMS

Bonjour,

Pour un site Wordpress, j'ai créé une fonctionnalité qui me permet d'associer les articles d'un custom_post_type aux articles classiques (actualités). En gros, lorsque je crée un article quelconque, j'ai une requête PHP (utilisant WP_Query) qui vient récupérer la totalité des pages de mon custom_post_type. Sauf que ma requête vient de dépasser le millier de références et je me dis qu'il y a sûrement moyen d'optimiser ça (car les ressources processeur s'affolent).

Je ne suis pas spécialement développeur et mes notions d'architecture s'en trouvent limitées. J'ai eu plusieurs pistes en tête et je souhaite vous les partager pour que vous me disiez "Très bien" ou "Mer il et fou ne fais surtout pas ça".

1. D'abord, cette requête est au chargement de la page d'édition ou de création d'un article, comme nous n'en avons pas toujours besoin (surtout lors de l'édition car nous avons déjà fait l'association), je me dis que je peux assigner la requête à un bouton quelconque pour faire la requête sur demande.

2. J'ai un millier de références sur toute ma période (2011-2014 en gros) mais en règle générale nous avons besoin de celle de l'année en cours et de l'année précédente on va dire, donc je pourrai sortir de ma requête celles de 2011 et 2012 et avoir un autre bouton d'action pour charger ces vieilles références quand c'est nécessaire. Ce point 2 me permettrait de cantonner la requête de base à 500 références à tout casser et dans de rares cas, faire appel à la requête complète. Est-ce intéressant de coupler ce point 2 au point 1 ?

3. Mes références changent peu souvent et on va dire que globalement, j'ai 10 nouvelles actualités à associer avant d'avoir une nouvelle référence. Je me suis dit que plutôt que faire une grosse requête dans mes bases, je pourrai générer un fichier XML par exemple avec les infos qui me servent à faire l'association et qui serait mis à jour à chaque création d'une référence ou lorsqu'un élément clé d'une référence existante est modifiée (ex : le nom). Ma requête pourrait alors se faire sur ce fichier XML plutôt que sur les bases elles-mêmes. Mais je ne sais pas vraiment si ce point 3 est pertinent dans mon cas (soulager les ressources processeur) voire pertinent tout court. Et s'il l'est, est-ce intéressant de le coupler au point 2. Ce qui ferait 2 fichiers XML dont un, le plus gros, serait mis à jour une fois par an par exemple (une référence vieille d'un an ou plus n'a aucune chance de connaître une modification fondamentale : nom, ID...)
Que pensez-vous de ces différentes pistes ? Je n'ai pas d'autres pistes en tête mais si vous en avez je suis preneur.

Merci pour vos conseils,