Utilisez la mise en cache pour un site web rapide comme l’éclair

Thijs Feryn explique pourquoi la mise en cache peut accroître la rapidité de vos sites web, comment cela se produit et quels outils sont disponibles. 

Quels facteurs influencent la rapidité de votre site web ?

Les sites web rapides sont devenus une priorité. Les internautes ont en effet de moins en moins de patience et abandonnent un site au moindre ralentissement, ce qui joue bien évidemment en faveur de la concurrence. Mais Google tient également compte de ce facteur en récompensant les sites web rapides par un meilleur positionnement dans les résultats de recherche.

Caching maakt vliegensvlugge websitesMais pour qu'un site web soit rapide, les choses ne sont pas aussi simples qu'on pourrait le croire. Il n'existe en effet pas de solution universelle. La mise en cache peut cependant être une bonne solution et booster les performances de votre site web. Cette solution permet en effet de stocker les données statiques et de ne pas devoir les recalculer à chaque visite. L'exemple classique est la page produit de votre site web. Les informations sur les prix et les propriétés des produits ne doivent pas à chaque fois être extraites de la base de données, puisqu'elles peuvent être stockées en cache.

La rapidité de votre site web est déterminée à trois niveaux. Tout commence par une infrastructure performante, et c’est votre hébergeur qui en est responsable. Il faut ensuite qu'un code rapide tourne sur cette infrastructure, et qu'il communique de manière efficace avec la base de données sous-jacente. Le troisième niveau est le front-end. C'est ce dernier qui se charge de l'aspect visuel de votre site web, et des améliorations peuvent également y être apportées, par exemple en optimisant les images pour Internet, et éventuellement en compressant et fusionnant les fichiers JavaScript et CSS. 

Comment ce ralentissement se produit-il ?

Cependant, la principale cause de ce ralentissement est la combinaison du code qui tourne sur l'infrastructure. Et c'est logique, puisque c'est là que la plupart des calculs sont effectués et que la plupart des processus se déroulent.

À chaque visite, une requête HTTP doit être prise en compte, pour ensuite être transmise au code. Le code doit souvent faire appel à une base de données. Puis, le résultat de la base de données doit à nouveau être traité. Tout cela pour finalement aboutir à une réponse HTTP que le serveur envoie au navigateur.

Cette succession d'actions peut nécessiter beaucoup de temps et de ressources. Sans compter qu'un effet de cascade peut en découler, surtout si le nombre de visiteurs simultanés est élevé. Et c'est là que la mise en cache peut s'avérer utile, puisqu’elle permet de réduire la fréquence de ces calculs. 

Réalisez et maintenez votre site web plus rapidement

L'optimisation de votre code demeure néanmoins importante. Mais même dans un monde idéal, un code optimisé ne pourra presque jamais à lui seul garantir un site web performant. La mise en cache peut toujours être utile dans de nombreux processus et calculs.

En réalité, l'optimisation est souvent réalisée jusqu'à atteindre un point critique d'équilibre entre les coûts et les bénéfices. On constate souvent que les investissements nécessaires ne correspondent pas aux résultats escomptés en termes de temps, de budget et de compétences. La mise en cache n'est donc pas seulement un remède temporaire, mais bien une vision à long terme, qui constitue un élément essentiel de la stratégie et de l'architecture.

« Après tout, pourquoi recalculerait-on constamment les sorties, alors que ces données sont statiques ? »

La mise en cache peut permettre à des sites web lents de devenir plus rapides, et nous parlons alors de performances. Mais elle peut également maintenir la rapidité des sites web rapides face à la pression croissante exercée par un grand nombre de visiteurs. Dans ce dernier cas, nous parlons d'extensibilité.

Mais au fait, comment cette mise en cache fonctionne-t-elle ?

Comment fonctionne la mise en cache ? La réponse à cette question dépend en fait de ce que vous voulez mettre en cache. Dans le meilleur des cas, ce sera le résultat final des calculs, à savoir la page entière. Et vous ferez cela pour réduire la charge du serveur. De l'entièreté du serveur. Si nous reprenons l'exemple de la page produit, ce sera le résultat complet de cette page. Si cela ne fonctionne pas, vous aurez toujours la possibilité de mettre en cache les sorties des processus de données.

Cela se fera plutôt du côté du code, le but étant de réduire la charge de la base de données. Si l'on se réfère une fois de plus à l'exemple des pages produits, il s'agit des sorties de la base de données, où l’on retrouve des informations sur les prix et les caractéristiques des produits.

Technologies de mise en cache

Varnish cachingEn fonction de votre choix, vous pourrez faire appel à diverses technologies. Varnish en est une qui stocke des pages entières dans le but de réduire la charge de l'entièreté du serveur. Les éléments mis en cache sont stockés dans la RAM, ce qui permet d'atteindre des vitesses phénoménales. L'identification se fait à l'aide de l'URL. Varnish est un système séparé qui se trouve devant le serveur web et communique via HTTP.

D'après notre expérience, c’est Varnish qui offre à ce jour les meilleurs résultats, car il tente de mettre en cache la page entière et toutes ses dépendances, y compris les images et les fichiers CSS et JavaScript. Cela n'est toutefois pas toujours souhaitable. Certaines pages contiennent en effet des parties de contenu qui varient d'un utilisateur à l'autre. Prenons l'exemple des paniers d'achat. Dans ce cas, tout ne peut pas être mis en cache. Et aussi ici, Varnish est capable de prendre les bonnes décisions pour ne mettre en cache que ce qui peut y être mis.

Memcached caching optieredis caching hostingDes technologies telles que Redis et Memcached sont plutôt destinées à mettre en cache les sorties des processus de données et à fonctionner depuis le back-end. Memcached et Redis sont des caches distribués. Pour faire simple, il s'agit de RAM distante à laquelle vous pouvez accéder via le réseau. Memcached et Redis ne prennent pas en charge les calculs complexes et stockent les données au format clé-valeur.

Redis prend en charge plusieurs types de données. Memcached en est incapable, mais malgré sa simplicité, il reste très efficace et très stable. Pour faire un choix parmi ces deux solutions, il faut que vous sachiez si vous souhaitez ou non utiliser les types de données pris en charge par Redis, mais il faut surtout que vous teniez compte de la compatibilité avec votre code.

Les données sont mises en cache, mais il faut aussi penser à leur suppression !

Quelle que soit la technologie choisie, vous devez toujours réfléchir à la durée de conservation des éléments dans le cache et à la façon dont vous les supprimerez du cache en cas de modification des données. Il est en effet pire de mettre en cache trop de données trop longtemps que d’y mettre trop peu de données.

La durée de mise en cache peut être déterminée en utilisant ce que l'on appelle la valeur Time To Live. Vous pouvez spécifier ce dernier dans Redis et Memcached en fonction des fonctions spécifiques d'ajout et de gestion des données. Varnish permet de faire cela par le biais d'un en-tête appelé Cache-Control, qui indique votre code de fin via HTTP. La suppression d'éléments du cache peut se faire dans Redis, Varnish et Memcached en fonction de certaines méthodes qu'ils proposent, mais heureusement, il existe des tas de plug-ins de frameworks et de SGC qui vous faciliteront la tâche. Cela peut sembler ironique, mais il est plus facile de placer des éléments dans le cache que de les en supprimer. Mieux vaut donc bien y réfléchir.

Pour un pack d'hébergement web, vous pouvez activer la mise en cache dans votre panneau de contrôle. Si vous avez un environnement d'hébergement infogéré, votre account manager se fera un plaisir de vous fournir des conseils sur l'option de mise en cache la mieux adaptée à votre situation.

Contactez-nous pour obtenir des conseils sur la mise en cache