WordPress mutualisé et rapide, c’est possible — partie 2 : mettre en cache

De manière générale, limiter le nombre d’extensions est une bonne règle pour accélérer un blog WordPress. C’est ce que l’on avait vu dans la première partie de cette série consacrée à l’optimisation. Néanmoins, certains plugins sont utiles pour optimiser son installation et accélérer son blog, à commencer par un système de cache.

Bizarrement, WordPress a été conçu pour utiliser un mécanisme de cache, mais ses concepteurs n’ont intégré aucun système qui permet de le faire concrètement. Il faut donc passer par un plugin et l’offre est pléthorique.

Principe général

Avant d’évoquer des noms, rappelons rapidement le principe d’un cache. Par défaut, un visiteur qui se rend sur votre blog génère chacune des pages à la demande. Quand il ouvre un article, WordPress récupère le modèle de la page nécessaire, puis remplit ce modèle avec le contenu stocké dans une base de données. À la fin, le visiteur voit du code HTML, mais en amont, il a fallu beaucoup de travail sur le serveur pour la générer. Le cache va réaliser ce travail avant même qu’un visiteur demande une page : chaque élément du site, chaque article et chaque page WordPress vont être stockés sur le disque dur du serveur. À partir de là, quand un visiteur veut voir une page, c’est cette version HTML déjà créée qui est affichée : l’opération est beaucoup plus rapide.

Le cache d'un blog WordPress : chaque article est enregistré sous la forme d'un fichier HTML dans un dossier. Les pages d'archive sont aussi enregistrées dans ce format.
Le cache d’un blog WordPress : chaque article est enregistré sous la forme d’un fichier HTML dans un dossier. Les pages d’archive sont aussi enregistrées dans ce format.

Le travail du plugin de cache est non seulement de générer ces pages, mais aussi de présenter aux visiteurs ce qu’ils veulent voir, mais encore de tenir toutes ces pages à jour. En effet, si vous ajoutez un article, vous voudrez que la page d’accueil du blog, ainsi que les pages d’archive soient à jour pour afficher ce nouveau contenu. De même, si vous corrigez une faute dans un article, vous voudrez que les visiteurs récupèrent la nouvelle version, pas l’ancienne. Mine de rien, c’est un vrai travail et tous les plugins de cache ne se valent pas.

This website is like a Rocket, isn’t ?

WP-Rocket

J’ai testé la majorité des systèmes de cache sur WordPress, pour ne pas dire tous. En général, ils proposent tous à peu près les mêmes fonctions, mais la différence se joue sur la vitesse du blog en fin de compte et sur la simplicité d’utilisation au quotidien. Parmi eux, j’ai finalement gardé WP-Rocket qui a l’inconvénient d’être payant, mais qui allie simplicité d’utilisation et très grande efficacité. Une fois l’achat effectué, il vous suffit d’installer le plugin comme n’importe quel autre et le cache est actif. WP-Rocket fait le pari bienvenu de ne proposer qu’une poignée d’options et non de longues listes incompréhensibles comme ses concurrents. C’est agréable et le résultat est là : pourquoi, dès lors, s’embêter avec les dizaines d’options des autres plugins ?

Les préférences de WP-Rocket
Les préférences de WP-Rocket

Après son installation et dès qu’un visiteur affiche une page, WP-Rocket stocke la page correspondante au format HTML si elle n’existe pas déjà. Une page est conservée pour une durée que vous choisissez dans les réglages. Par défaut assez basse (quatre heures de mémoire), je recommande d’augmenter cette durée : j’ai choisi deux semaines, mais j’aurai sans doute pu mettre plus encore. Le cache est vidé automatiquement quand vous mettez à jour un article ou quand un commentaire est ajouté, si bien que vous pouvez laisser un délai d’expiration assez élevé. Vous pouvez même désactiver totalement l’expiration pour un site totalement statique en mettant « 0 » comme valeur.

Le seul problème à garder longtemps les fichiers de cache, au fond, ce sont les contenus vraiment dynamiques. Si vous utilisez un widget qui affiche les derniers commentaires ou les articles les plus populaires, vos visiteurs n’auront pas de mises à jour des données pendant toute la durée du cache si vous ne mettez pas le contenu à jour dans l’intervalle. WP-Rocket ne permet pas de faire d’exception pour une partie de la page et il faudra soit accepter qu’une partie du contenu ne soit pas systématiquement à jour — c’est ce que j’ai fait sur mon blog personnel pour des articles au hasard affichés après un article et pour les plus populaires —, soit diminuer la durée du cache à quelques heures.

contenu-statique
Les quatre images affichées en bas d’un article sur ce blog sont choisies au hasard à chaque chargement de la page. Avec un cache actif, le visiteur verra toujours les mêmes tant que le cache n’a pas expiré ou n’a pas été vidé manuellement.

Attention toutefois, ce plugin a un défaut qu’il faut connaître avant de choisir le délai d’expiration des pages. Même si WP-Rocket accélère sensiblement votre blog quand il a généré du contenu statique, il le ralentit pour la première visite, celle qui doit justement créer le fichier statique. Dans mon cas — blog hébergé sur un mutualisé OVH —, j’ai noté un ralentissement assez net au premier chargement par rapport au blog sans le plugin. C’est un inconvénient, mais il reste assez mineur, notamment parce que c’est le seul, à ma connaissance, à proposer une fonction de préchargement intelligent.

Le principe est simple : pour éviter que vos visiteurs connaissent les ralentissements que l’on évoquait précédemment, WP-Rocket va simuler une visite sur le blog avec un robot et effectuer ainsi la première mise en cache. Contrairement à d’autres plugins, celui-ci ne va pas mettre l’intégralité du contenu en cache. Même si l’idée est séduisante sur le papier, elle pose de nombreux problèmes, en particulier sur un hébergement mutualisé où les ressources sont limitées. La solution trouvée par ce plugin est plutôt séduisante : des robots localisés sur les serveurs de ses concepteurs plutôt que sur le vôtre viennent visiter votre site et mettent en cache la page d’accueil du blog, mais aussi toutes les pages liées.

Partant du principe que les derniers articles sont susceptibles d’être les plus lus, cette solution est plutôt bien vue. Elle limite la pression sur votre serveur qui n’a pas à faire tout le travail et qui peut se contenter de créer les versions HTML des pages et elle permet surtout aux premiers visiteurs de ne pas avoir à attendre. On peut activer ce préchargement dans le menu affiché par WP-Rocket dans le menu administrateur du blog. C’est aussi ici que l’on pourra manuellement purger du cache une URL ou bien vider tout le cache, opération indispensable si vous modifiez le thème notamment.

Le menu de WP-Rocket, accessible à n'importe quel moment sur votre blog.
Le menu de WP-Rocket, accessible à n’importe quel moment sur votre blog.

WP-Rocket ne se contente pas de sauvegarder en statique les articles et les pages de votre blog, c’est l’intégralité du contenu qui est mis en cache par le plugin. Vos pages d’archive générées automatiquement par WordPress pour les catégories, les mot-clés et les taxonomies personnalisées sont ainsi stockées en HTML. À condition de suivre cette petite astuce évoquée précédemment, même les résultats de recherche peuvent être sauvegardés : pratique si vos utilisateurs font des recherches sur quelques termes seulement.

Par rapport à d’autres solutions concurrentes, ce plugin a d’autres arguments à faire valoir. En un clic, il active une fonction de « Lazyload » qui ne charge les images que lorsqu’elles sont affichées à l’écran et non toutes d’un coup. Cette option n’accélère pas en soi le chargement, mais elle permet de réduire la bande passante utilisée par votre blog et surtout elle offre la possibilité de charger rapidement les premières images, les plus importantes pour le visiteur qui vient sur un article ou une page. Vous pouvez voir ce que cela donne sur cette page qui contient plus de 400 images. Dans les réglages, on peut aussi réduire la taille des fichiers JavaScript et CSS et les réunir en un seul fichier, deux éléments qui accélèrent le chargement des pages. Comme précisé dans les réglages du module, ces options peuvent aussi poser quelques problèmes : si quelque chose ne va pas après les avoir activées, vous pourrez les désactiver.

Comme tous les plugins de cache, celui-ci ne fonctionne que pour les visiteurs, mais pas pour vous, du moins dans la version actuelle. Si vous voulez le tester, il faudra bien penser à naviguer sur le blog en étant déconnecté. Pour être vraiment sûr de voir la version en cache, utilisez le mode de navigation privée des navigateurs. Et vous pouvez vérifier que vous avez le fichier HTML créé par WP-Rocket en regardant le code source. Si vous voyez ces mots à la fin du document, c’est bon ! Le cache affiché aussi pour les visiteurs connectés sera proposé dans une future mise à jour.

WP-Rocket ajoute une ligne à la fin du code source : un bon moyen de vérifier que le plugin fonctionne bien…
WP-Rocket ajoute une ligne à la fin du code source : un bon moyen de vérifier que le plugin fonctionne bien…

WP-Rocket est vendu 30 € pour un site. L’achat est définitif et vous pourrez utiliser le plugin à vie, mais le support et surtout les mises à jour ne sont proposés que pour un an. C’est dommage, même si les concepteurs du module m’ont assuré qu’une mise à jour sera proposée à tous les utilisateurs si le plugin est bloqué par une nouvelle version de WordPress. Pour obtenir les nouvelles fonctions, on a malgré tout une formule plus proche de l’abonnement, un critère à prendre en compte avant achat.

Il n’y a malheureusement aucun moyen de tester le plugin avant achat, mais l’éditeur a une politique plutôt agréable sur ce point. Si vous achetez le module et qu’il n’améliore pas assez les performances du blog, vous pourrez obtenir un remboursement. Avant de payer, vérifiez que votre serveur utilise bien Apache, ce qui est le cas de la majorité des hébergements mutualisés (chez OVH c’est le cas). L’éditeur travaille à une nouvelle version qui prendra en charge Ngninx et Lightspeed, deux concurrents que l’on peut trouver sur certains serveurs.

Si vous ne voulez pas payer, optez plutôt pour WP Super Cache qui est gratuit, mais bien plus complexe à configurer pour un résultat pas toujours aussi performant que celui que l’on évoquait précédemment. On y trouve toutefois la majorité des fonctions de WP-Rocket, y compris pour générer une version statique intégrale du blog

wp-super-cache
Une partie des réglages de WP Super Cache
Publicités

3 commentaires sur “WordPress mutualisé et rapide, c’est possible — partie 2 : mettre en cache

Répondre

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s