Accélérer WordPress – Partie 3 – Le grand ménage
Le grand ménage
L’architecture modulaire de WordPress, si elle est très pratique, tend à provoquer des effets d’accumulation indésirables au fil du temps : la facilité d’installation des plug-ins fait qu’un webmaster actif aura tendance à tester beaucoup de solutions pour améliorer l’ergonomie de son blog. Or l’accumulation de plugins, surtout s’ils sont inutilisés, va rapidement causer un ralentissement général du site, y compris par les modules ou widgets qui n’auront finalement pas été retenus pour intégration dans les templates de page ou les barres latérales.
Supprimer tous les plugins inutiles
Le systèmes des “hooks” procéduraux applicatifs et des “filtres” ou “callbacks” fait que chaque auteur de plug-ins multiplie les “détours” dans l’exécution du code de base de l’applicatif. Certains de ces “détours” peuvent être extrêmement gourmands en mémoire ou en temps d’exécution, notamment lorsqu’ils exécutent des expressions rationnelles complexes sur l’ensemble du contenu d’un billet (technique très courante), ou qu’ils effectuent des requêtes à jointures multiples avec tri sur la base MySql (par exemple pour exploiter à fond les possibilités la taxonomie : tags et catégories hiérarchiques,…).
Sans entrer dans les détails, chaque plugin dont les fonctionnalités ne sont pas exploitées ou n’offrent pas un “service ergonomique rendu” vraiment justifié doit être désinstallé.
En plus de la désactivation du plugin, il faut bien veiller à supprimer physiquement les fichiers du répertoire /wp-content/plugins, afin d’éviter un parcours inutile de ce répertoire à chaque affichage de la page “plugins” dans l’interface d’administration du blog. Prenez l’habitude de stocker les fichiers de tous vos plug-ins désactivés ailleurs que dans l’arborescence de votre serveur. Par exemple en local sur votre propre disque dur.
Mettre à jour WordPress et tous les plugins
Les dernières versions de WordPress vous offrent un moyen simple de savoir à tout moment si toutes vos extensions sont bien à jour de leur dernière version. Il est important de s’assurer que vous utilisez les versions stables les plus récentes de tous vos plugins, car une grande partie des mises à jour concernent des résolutions de bugs ou des améliorations techniques qui auront un impact positif d’ensemble sur les performances de votre site.
Ayez à l’esprit que les développeurs de plugins WordPress procèdent souvent par améliorations successives au fur et à mesure de la diffusion de leur “oeuvre”, et des retours qu’ils obtiennent de la communauté de leurs utilisateurs : plus le temps passe, plus leur plug-in est utilisé, et plus ils ont à coeur de l’optimiser en termes de performances.
Il en va d’ailleurs de même pour l’équipe de développement des fonctionnalités de base de WordPress.
Diminuer le nombre d’appels externes
Nous entrons ici dans l’optimisation de vos propres modèles de pages (gabarits ou templates). Du point de vue de l’expérience de l’utilisateur final de votre site, ce qui est le plus consommateur de temps de chargement au cours de sa navigation est en effet le chargement d’éléments “externes” à votre site.
Supprimer un maximum (voire l’ensemble) de ces appels “d’objets externes” est donc un facteur primordial d’amélioration de la fluidité de navigation.
Qu’est-ce qu’un objet externe ?
– Tout objet, image, script, applet, cadre (frame), flux RSS, hébergé en-dehors de votre propre serveur d’exploitation (et donc a fortiori en-dehors de l’architecture de WordPress) est considéré comme un composant externe : il va impliquer la résolution d’un nom de domaine (DNS) distinct de celui de votre site, puis la connexion du navigateur de l’internaute à cet autre site pour télécharger le composant. Or les délais de résolution DNS et d’établissement de connexions HTTP, négligeables au départ, s’additionnent rapidement, causant parfois la saturation de la “pile de connexion” du navigateur, qui devient moins performant quand il doit gérer plusieurs connexions simultanées à différent serveurs sur le réseau pour construire la page.
La situation est pire quand il s’agit d’appels de scripts nécessaires à la construction dynamique de la mise en page : dans ce cas, l’ensemble de l’affichage de la page peut “attendre” l’arrivée d’un composant, ce qui dégrade énormément l’expérience de l’utilisateur final qui se voit contraint d’attendre pendant de nombreuses secondes l’arrivée du contenu.
Citons enfin le cas, de plus en plus répandu, des techniques d’affichage dynamique utilisant les technologies Ajax, RSS ou les Web-services (par exemple l’API Google Maps), qui rendent là-aussi l’affichage de votre page dépendant de connexions externes à votre serveur pour récupérer des flux de données XML.
L’extension Firebug de Mozilla vous sera particulièrement utile pour débusquer tous les appels à des composants externes sur votre page : pour chacun d’entre eux, essayez de retracer sa provenance (plugin ? widget ? image publicitaire ? fonctionnalité indispensable ?), et décidez s’il vous est vraiment utile ou si vous pouvez vous en passer.
Par expérience, la diminution des appels externes dans la composition d’une page web peut en général réduire de moitié le temps de chargement et d’affichage de la page tel que perçu par l’utilisateur final. Même s’il ne s’agit pas stricto sensu d’une technique d’optimisation propre à WordPress, toute démarche d’accélération de votre site doit passer par là.
Trop de pub tue la pub
Dernier point : la publicité. Par nature elle est invasive et a un impact sur l’ergonomie et les performances de vos pages. Afin de diminuer cet impact, essayez quand c’est possible (et pas trop nuisible à vos taux de clics), de placer les appels aux composants publicitaires à la suite de votre contenu dans le flux de la page.
Les composants publicitaires sont en général dynamiques, à base d’appels externes en javascript et non “cachables”, donc tout ce qui fait le plus mal aux performances ! – La mauvaise fluidité de vos pages peut vous faire perdre des pages vues par visiteur, des affichages, des clics sur vos bannières, et donc du revenu.
Pour chaque emplacement publicitaire, posez-vous, là encore, les bonnes questions : avec Google Adsense par exemple, il n’est pas rare que le fait de diminuer le nombre de zones d’affichage publicitaire par page ne fasse pas baisser les revenus, voire les augmente (pour des raisons logiques liées à la gestion d’inventaire que j’expliquerais peut-être un jour dans un autre billet 😉 )
Réduire la taille des pages et de la feuille de style
Passez en revue le code XML de vos templates WordPress, et supprimez tous les blocs inutiles : parties commentées, affichages invisibles, espaces et sauts de lignes redondants.
Vous pouvez facilement grapiller quelques octets, qui multipliés par le nombre de pages affichées, soulageront (-à la marge il est vrai-) votre infrastructure d’hébergement et le navigateur de vos visiteurs.
Faites de même pour votre feuille de style CSS : supprimez-en tous les blocs de styles inutilisés, et là où c’est possible, agrégez les styles pour simplifier. A noter là aussi que le gain à espérer est parfois marginal par rapport au niveau de compétences nécessaires pour bien optimiser une feuille de style.
Le temps nous étant compté, commencez par les choses évidentes. il sera toujours temps de revenir plus tard, un jour, faire une refonte plus complète de votre code XML et CSS dans le cadre d’une refactorisation de votre interface utilisateur…
Lire la suite :
- Installer des systèmes de cache (partie 4)
- Optimisation de la livraison des images (partie 5)
- Résultats et conclusions (partie 6)