Améliorer les performances de WordPress multisite en 3 étapes.

Améliorer les performances d’une installation multisite de wordpress est crucial si comme moi vous hébergez vos blogs sur un serveur mutualisé. En effet, pour des raisons de commodité j’ai depuis plus d’un an réuni l’ensemble de mes blogs sous une seule et même installation de WordPress, option rendue possible grâce au mode multisite disponible en […]

Améliorer les performances d’une installation multisite de wordpress est crucial si comme moi vous hébergez vos blogs sur un serveur mutualisé. En effet, pour des raisons de commodité j’ai depuis plus d’un an réuni l’ensemble de mes blogs sous une seule et même installation de WordPress, option rendue possible grâce au mode multisite disponible en standard depuis la version 3 (si vous voulez faire la même chose c’est par ici que ça se passe). L’intérêt est que l’ensemble de mes blogs partagent la même version de wordpress, des plugins, … ce qui représente un gain de temps non négligeable lorsque vous éditez 5 sites tournant sous wordpress.

Le revers de la médaille est que sur un serveur mutualisé, les performances ne sont pas vraiment au rendez vous et que les pages mettent parfois un bon bout de temps pour se charger. Fort heureusement, à force d’essais j’ai fini par trouver des optimisations satisfaisantes tant d’un point de vue temps de chargement que simplicité de mise en oeuvre et maintenance.

améliorer les performances de wordpress multisite en 3 étapes. (image)

Dieu google merci, il existe sur le net de nombreuses ressources sur le sujet, leur lecture m’a d’ailleurs été fort utile pour mener mes expérimentations (je ne suis malheureusement pas en mesure de rendre hommage à leurs auteurs ici n’ayant pas noté les sources au fur et à mesure de mes essais..). J’apporte avec ce billet s’éloignant des sujets habituels d’haikusages une modeste contribution qui je l’espère sera utile à certains d’entre vous.

htaccess – pourquoi faire compliqué quand on peut faire simple ?

Pour les moins aguerris d’entre nous, jouer avec les paramètres du htaccess ressemble un peu à une partie de poker à l’aveugle. Au final, il s’avère que quelques lignes suffisent à apporter des gains de performance non négligeables, une bonne dose d’optimisation et quelques serrures supplémentaires en évitant de trop mettre la main sous le capot. Je vous les livre en mode brut, la ligne de commentaire qui précède chaque bloc me semblant suffisamment explicite (si ce n’est pas le cas n’hésitez pas à poser une question dans les commentaires).

# protect the htaccess file

order allow,deny
deny from all
</files>
# protect wpconfig.php
order allow,deny
deny from all
</files>

# disable directory browsing
Options All -Indexes

# Turn off ETags for caching purpose
FileETag None
Header unset ETag

# 1 YEAR file caching
<filesMatch « \.(ico|pdf|flv)$ »>
Header set Cache-Control « max-age=29030400, public »
</filesMatch>

# 1 WEEK file caching
<filesMatch « \.(jpg|jpeg|png|gif|swf|css|js)$ »>
Header set Cache-Control « max-age=604800, public »
</filesMatch>

# 2 DAYS file caching
<filesMatch « \.(xml|txt)$ »>
Header set Cache-Control « max-age=172800, proxy-revalidate »
</filesMatch>

# 2 HOURS file caching
<filesMatch « \.(html|htm|php)$ »>
Header set Cache-Control « max-age=60, private, proxy-revalidate »
</filesMatch>

# gzip page compression
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*

</ifModule>
# php page compression (use with caution)
php_value zlib.output_compression 16386
</ifmodule>

php_value zlib.output_compression 16386

</ifmodule>

Plugin de mise en cache – quelle compatibilité multisite ?

Le problème de la majorité des plugins de gestion de cache wordpress est qu’ils ne sont pas compatibles avec l’option multisite ou alors avec le pourtant très utile plugin MU Domain Mapping (qui permet d’avoir un nom de domaine différent pour chaque blog). J’en ai testé beaucoup, dont W3 Total cache, la plupart ne fonctionnant pas ou ayant trop d’effet de bord pour être satisfaisants.

La perle rare existe tout même, il s’agit de QuickCache qui ne demande qu’une simple activation réseau et une action sur son tableau de bord pour qu’il se mette à accélérer l’ensemble des sites de votre installation en générant une version statique de chacune de vos pages. Il se débrouille d’ailleurs vraiment très bien et, couplé aux paramètres de durée de vie des fichiers mis en cache ajoutés dans le fichier htaccess, fait vraiment des merveilles.

améliorer les performances de wordpress multisite en 3 étapes. (image)

CDN – pour aller plus loin.

CDN est l’acronyme de Content Delivery Network, il s’agit d’un système d’optimisation de la distribution des contenus basé sur la proximité géographique. Le principe, résumé dans l’illustration ci-dessous (merci Gonzague), est de cloner les contenus du site sur des serveurs répartis un peu partout dans le monde et de les transmettre au navigateur du visiteur à partir du serveur le plus proche de lui. L’idée est de gagner du temps en faisant parcourir une distance plus faible aux contenus les plus lourd.

améliorer les performances de wordpress multisite en 3 étapes. (image)

J’utilise CloudFlare qui propose cette option de CDN mais également d’autres options bien pratiques comme un filtrage réduisant le nombre de connexions de spammeurs ou encore des options d’optimisation des performances, le tout gratuitement. Bien que demandant quelques actions de paramétrage chez votre hébergeur pas forcément évidente au premier abord pour le commun des mortels, cette solution est relativement rapide à mettre en oeuvre et je n’ai jamais eu le moindre problème avec depuis plus d’un an. Je le conseille ainsi vivement surtout si une partie de vos visiteurs ne viennent pas de france.

 

Voilà, je ne vous avais pas menti, il s’agit de quelques modifications simples et rapides à mettre en oeuvre qui par ailleurs ne vous demanderons quasiment pas la moindre action de maintenance une fois terminées. Grâce à leur combinaison, je suis passé à un temps de chargement de moins de 10s sur webpagetest pour haikusages et l’ensemble de mes sites. D’ailleurs, avez vous remarqué cette amélioration ? Pour gagner encore quelques précieuses secondes il faudrait que je nettoie un peu mieux les templates des thèmes wordpress que j’utilise et que je passe un peu de temps à optimiser les images présentes.. un jour peut être !

Gallerie



 

Le magazine

Découvrez nos derniers articles sur la communication, l'identité et image de marque, le marketing digital, l'innovation & cie.

 

Votre projet

Vous avez un projet, un besoin, une question ?

Contactez-nous et discutons-en de vive-voix !