À quoi sert la cache?

October 22, 2020

Vous avez entendu dire par votre développeur; « c'est à cause de la cache! » quand votre site était croche ou qu'une modification ne s'affichait pas, mais c'est quoi la cache?

Définir la cache

La mise en cache de document Web (ex : page web, images) est utilisée afin de réduire la consommation de bande passante, la charge du serveur web (les tâches qu'il effectue), ou améliorer la rapidité de consultation lors de l'utilisation d'un navigateur web.

Source : https://fr.wikipedia.org/wiki/Cache_web

La cache est, dans les faits, un préassemblage d'une page Web en format html. Par exemple, un site WordPress ou Joomla sont créés en utilisant le langage de programmation PHP et une base de données MySQL. Les navigateurs n'interprètent pas le langage PHP, il doit donc être exécuté sur le serveur pour donner un format que les navigateurs sont capable de lire, le HTML. Ce processus prend du temps et demande relativement beaucoup de ressources pour générer les fichiers HTML et doit le faire pour cache visiteur. Comme le processus est très intensif sur les ressources, garder en mémoire le HTML préassemblé génère un gain en performance et aussi augmente considérablement la capacité à un serveur d'accueillir des visiteurs.

Un exemple que j'ai trouvé un jour sur Internet utilisait une analogie simple pour illustrer la mise en cache. Si on a une foule dans une salle, on leur demande de faire un calcul complexe. Personne ne peut répondre instantanément jusqu'à ce que quelqu'un sorte sa calculatrice et donne la réponse. Ensuite, on demande aux gens de résoudre le même calcul complexe, tout le monde peut donner la réponse instantanément. C'est ça la cache.

Ok, mais est-ce que j'en ai besoin?

Il est certain que tout le monde peut bénéficier d'un système de mise en cache. Par contre, je vois trop de gens masquer des problèmes fondamentaux qui ralentissent un site avec une mise en cache. Ils ont un site qui charge relativement rapidement, mais s'il avaient optimisé leur site d'abord, ils auraient un site qui charge instantanément (ou presque).

Donc, pour répondre simplement à la question, si le site est développé avec un langage qui s'exécute sur le serveur (WordPress par exemple), oui. Par contre, c'est une des dernière chose qu'on devrait implanter dans le processus d'optimisation d'un site.

Type de cache

Il existe plusieurs niveaux et types de cache. Sur WordPress, on peut utiliser une extension pour mettre en cache un site Web. Le principal avantage est que c'est simple à implanter et demande que très peu de configuration. Par contre, ces extensions demandent quand même une exécution de PHP pour localiser les fichiers HTML assemblés. Le système va permettre une accélération et une augmentation du trafic potentiel, mais va demander quand même un certain niveau resource pour diriger vers les fichiers assemblés.

Il y a un système de cache au niveau serveur comme l'offrent Nginx, Litespeed, Redis ou Varnish pour ne nommer que ceux-ci. Le principal avantage de ce type de mise en cache est qu'il n'exécute pas PHP et contourne la plateforme. De plus, dans plusieurs cas, on peut stocker la cache dans la mémoire du serveur qui est beaucoup plus rapide que les disques SSD. Par contre, ce système demandera un peu plus de configuration et est plus compliqué de régler des problèmes.

Il existe, par contre, un compromis qui permet d'utiliser une extension de cache sur WordPress et utiliser une configuration du serveur Web pour contourner l'exécution PHP. Celà permet d'utiliser la simplicité des extensions WordPress et la rapidité de la livraison par le serveur Web. Ça permet d'être presque aussi rapide que la cache au niveau serveur et d'accueillir un peu moins d'utilisateurs simultanément, mais sans sa complexité.

Quel extension utiliser?

Mon préféré parce qu'il est performant et très compatible, WP Rocket. Il permet d'optimiser beaucoup d'aspects d'un site Web, et donne de très bons résultats. De plus, avec le projet Rocket-Nginx, on peut contourner l'utilisation de PHP et servir les fichiers HTML rapidement.

Ma deuxième extension préférée est Swift Performance parce qu'il permet d'optimiser presque tous les aspects d'un site Web incluant la base de données et les images. Avec l'ajout des règles de réécritures Nginx ou Htaccess on peut aussi contourner simplement l'exécution de PHP.

En conclusion

La cache est important, mais n'est qu'un élément dans le processus d'optimisation d'un site Web. Il est important d'optimiser tous les aspects d'un site avant de penser à mettre en place un système de cache. Il est beaucoup plus profitable d'utiliser un thème bien programmé et d'éviter d'utiliser de grosses images que d'utiliser la cache.

Vous avez un projet?
Aujourd'hui est le bon moment pour commencer à le concrétiser. Parlons-en, nous allons accomplir vos objectifs ensemble.
Démarer dès maintenant