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 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.

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.

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.

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 !

Ne ratez plus aucun article !

Inscrivez vous à la newsletter d’haikusages.fr et recevez un résumé hebdomadaire par email !

Auteur: Fabien Grenet

Fabien est entrepreneur et designer de service. Il travaille chez HENSEN conseil, l'agence de conseil en design de service & d'expérience qu'il a fondé. S'appuyant sur une approche design créative centrée sur l'utilisateur final, elle accompagne startups, PME et grands groupes dans la réflexion, la conceptualisation et la mise en oeuvre de solutions web & mobile ainsi que dans la mise en oeuvre de dynamiques de travail collaboratives.

Share This Post On

3 Comments

  1. Je ne pouvais pas partir sans te remercier pour ton article :D merci merci
    Je n’est pas fait la technique du htaccess que je juge plutôt dangereuse mais par contre j’ai fait les 2 autres et je teste actuellement Quick Cache à la place de W3 Total cache.
    Pour ce qui est de CloudFlare, j’adore ! Vraiment complet et mon serveur est enfin disponible très rapidement dans le monde entier :D

    Post a Reply
    • Pour le htaccess, je n’ai mis que les tweaks les plus simples. A priori il n’y a pas grand risque mais je comprend :) W3 total cache c’est ce que j’utilisais avant, mais en fait il est bien trop lourd / complexe par rapport à la simplicité de Quick Cache et les gains en perf qu’il procure !

  2. D’accord d’accord, bon je pense que je ferai un petit lien sur mon site du coup ;)

    Post a Reply

C'est à vous !