Retour au Blog

Tout savoir sur la mise en cache + TIPS

Tout savoir sur la mise en cache + TIPS

Vous avez certainement entendu parler du fameux cache, que ce soit sur votre téléphone mobile ou sur votre ordinateur, mais est-ce que vous savez à quoi cela correspond ?

Clarifions en détail ce sujet : 

  1. Le cache, qu’est-ce que c’est?
  2. Quels sont les types de cache
  3. Comment cela fonctionne?
  4. Les validateurs et la validation
  5. Cache Tips - informations pratiques

Le cache, c’est quoi ?  

Le cache tout comme la RAM est une mémoire, contribuant à optimiser la performance du CPU.

Son rôle est d’enregistrer temporairement les données, informations ou programmes utilisées pour lui permettre d’y accéder plus facilement ultérieurement.

Lorsque le processeur traite des données, il va d’abord requêter le cache pour savoir s'il contient les informations qu’ils recherchent. 

Cela lui permet dans un premier temps, d’éviter d’aller les trouver sur un serveur plus volumineux. 

Pour simplifier, la mémoire cache sert à stocker de manière temporaire certaines informations utilisées régulièrement par le processeur. Cela permet d’obtenir plus rapidement ces données lors d’un accès ultérieur et permet d'optimiser l'efficacité du processeur.

Il existe 3 types de cache : 

  1. Les caches de navigateur : 

Dans les préférences d’un navigateur comme Firefox, se trouve un bouton "cache", celui-ci permet de stocker des ressources statiques que vous avez vu sur un site (juste pour vous), comme des images, des fichiers CSS, etc.

Le cache navigateur permet de charger la page quasi instantanément dans 2 cas :

  • Lorsque l’utilisateur clique sur le bouton retour ;
  • Lorsque l’utilisateur clique sur le lien d’une page visitée auparavant.
  1. Les caches de serveurs mandataires :

Ce type de cache fonctionne exactement comme le cache navigateur mais sur une plus grande échelle. Il est doté d’une mémoire de masse qui peut régulièrement stocker et mettre à jour les pages web les plus consultées par un grand nombre d’utilisateurs.

En effet, les grandes entreprises et les fournisseurs d’accès internet servent des centaines d’internautes de la même manière, ces mandataires le mettent souvent dans leur pare-feu ou comme une disposition autonome. Les caches mandataires se trouvent donc sur le réseau.

On se trouve dans un type de cache partagé, qui concerne plusieurs utilisateurs, et qui permet de réduire l'attente et le trafic des réseaux, vu que les représentations populaires sont réutilisées plusieurs fois.

  1. Les caches de passerelles

Appelés aussi des serveurs cache inverses ou cache auxiliaires. Ces caches sont aussi des intermédiaires, mais au lieu d'être déployés par les administrateurs de réseaux pour économiser la bande passante, ils le sont généralement par les webmasters eux-mêmes afin de rendre leurs sites plus évolutifs, plus fiables et plus performants. 

Les demandes peuvent être acheminées vers le cache de la passerelle à travers plusieurs manières, mais on utilise une certaine forme d'équilibrage de charge afin qu'une ou plusieurs d'entre elles apparaissent aux clients en tant que serveur original.

Un réseau de diffusion de contenu (CDN) distribue des caches de passerelle sur Internet (ou une partie de celui-ci) et vend les caches aux sites Web intéressés. Speedera et Akamai sont des exemples de réseaux de diffusion de contenu.

Comment fonctionnent les caches ?

Les caches fonctionnent suivant des règles précises, elles sont déterminées par 2 parties : Les protocoles HTTP 1.0 & 1.1, et l’administrateur du cache.

Le jeu de règles est le suivant : 

Dans l’entête d’une page <head>, les auteurs HTML peuvent placer des balises meta qui servent à indiquer si le contenu est cachable ou non cachable, et qui permet de donner une date d’expiration. 
Ces balises sont faciles à mettre en place, mais elles ne sont prises en compte que par quelques caches de navigateurs qui lisent le code HTML.

Ci-dessous la liste des en-têtes efficaces : 

  1. En tête HTTP Expires : Contrôle de la fraîcheur des caches

Expires indique aux caches le temps d’expiration d’une représentation, pour qu’après ce temps passé, le cache vérifie auprès du serveur si les ressources ont changé.

Les en-têtes Expires sont reconnues par la majorité des caches, et conviennent particulièrement aux ressources de type images statiques (barres et boutons de navigation) qui ne changent pas beaucoup.

Néanmoins, elles sont aussi utiles pour les pages qui changent régulièrement. Dans ce cas, il faudra paramétrer une date d’expiration plus courte pour que les données se rafraichissent.

Il est à noter que la valeur qui doit figurer dans un en tête Expires doit être une date HTTP.

Exemple : Tue, 14 Jan 2023 18:13:34 GMT

  1. En tête HTTP Cache-control :

Ces en-têtes ont été introduites par HTTP 1.1 pour donner plus de contrôle sur le contenu.

Elles sont les suivantes : 

  • max-age=[secondes] :  indique en combien de secondes la représentation sera considérée fraîche. 
  • s-maxage=[secondes] : C'est la même chose que max-age, sauf qu'elle ne s'applique qu'aux caches mandataires.
  • public : marque les réponses authentifiées comme cachables car, dans la norme, les réponses sont automatiquement non cachables.
  • no-cache : soumet la requête au serveur original à chaque fois pour la valider avant l’affichage d'une copie cachée. Elle sert à maintenir une fraîcheur rigide du contenu, sans sacrifier la mise en cache.
  • no-store : instruit les caches de ne garder aucune copie de la représentation dans toutes les conditions.
  • must-revalidate : indique aux caches d’obéir à toute information de fraîcheur indiquée, car HTTP permet aux caches de servir des représentations périmées sous certaines conditions, mais en indiquant cette en-tête, les règles sont respectées strictement
  • proxy-revalidate : similaire à must-revalidate, mais elle ne s'applique qu'aux caches de mandataires.

Exemple : Cache-Control: max-age=3600, must-revalidate

Les validateurs et la validation

Lorsqu’on effectue une modification aux données, le modèle d’expiration n’est pas suffisant. et c’est dans ce cas que le modèle de validation intervient avec l'en-tête “Last-Modified”, qui continue de stocker les réponses en demandant à l’application si ces dernières sont toujours valides ou doivent être régénérées (avec l'en-tête If-Modified-since).

Donc la validation permet de communiquer le fait qu'une représentation a changé. Ce qui évite au cache de devoir télécharger les ressources entières. 

Il existe un autre type de validateur appelé ETag qui a été introduit par HTTP 1.1 ; où à chaque fois que la représentation change, le serveur génère un identificateur unique Etag et le contrôle, pour que quand l’attribut If-Non-Match apparaît, la représentation reste la même.

Ces 2 validateurs concernent uniquement les représentations statiques.

Cache tips / informations pratiques : 

  • Identifier les ressources les plus volumineuses et les plus populaires pour les rendre cachables (photos)
  • Écrire des scripts compatibles avec les caches pour les contenus dynamiques comme les sites avec CGI, ASP et bases de données.
  • Utiliser les mêmes adresses URL dans les pages ayant le même contenu
  • Utiliser une bibliothèque commune d’images
  • Utiliser les en-têtes cache-control pour les ressources qui ne changent pas beaucoup
  • Indiquer une date d’expiration pour les ressources changeantes
  • Ne changez pas les fichiers sans nécessité
  • Quand vous changez un fichier téléchargeable, changez son nom
  • Utiliser les pages SSL qu’en cas de besoin
  • Si la requête est authentifiée ou sécurisée, elle n'est pas mise en cache.