Agence web » Actualités du digital » Comment configurer les en-têtes de contrôle du cache dans Apache

Comment configurer les en-têtes de contrôle du cache dans Apache

comment-configurer-l39authentification-http-de-base-dans-apache-cloudsavvy-9764406

Le navigateur de chaque utilisateur utilise un cache intégré pour stocker les objets téléchargés, ce qui peut considérablement accélérer les visites répétées sur votre site Web en chargeant à partir du disque plutôt que du réseau. Voici comment le configurer dans Apache.

Comment fonctionne la mise en cache?

La première fois qu'un utilisateur se connecte à votre site, il téléchargera toutes les ressources statiques nécessaires pour afficher la page, y compris des éléments tels que votre logo. Lorsqu'ils accèdent à une nouvelle page, il charge votre logo à partir de la mémoire plutôt que de le demander à nouveau, ce qui accélère considérablement les performances et réduit la charge de votre serveur Web dans le processus.

Il s'agit d'un cache côté client, mais de nombreux sites utiliseront également un réseau de diffusion de contenu ou CDN. Un CDN est un réseau de serveurs qui se trouvent en face de votre serveur Web principal, ou serveur «d'origine». Ce réseau met en cache vos pages, augmentant votre bande passante maximale, réduisant la latence d'accès et réduisant considérablement le stress placé sur votre serveur d'origine. Si vous souhaitez en savoir plus sur les CDN, vous pouvez lire notre guide à leur sujet ici.

Cache-Control est un en-tête que vous pouvez configurer votre serveur Web pour l'ajouter à toutes les demandes sortantes, ce qui indiquera au navigateur et aux CDN comment mettre en cache votre contenu.

Certaines pages devraient jamais être mis en cache par des caches partagés comme les CDN. Cela risquerait d'afficher les informations personnelles d'un utilisateur à d'autres. En règle générale, si la page doit être exactement la même pour tous les utilisateurs, comme votre page d'accueil, vous pouvez la mettre en cache. S'il affiche des informations utilisateur confidentielles, vous souhaiterez les mettre sur liste noire à partir de votre cache. Les ressources statiques, comme le CSS et les images, peuvent généralement être mises en cache pour tout le monde, souvent beaucoup plus longtemps.

Le temps passé par l'objet dans le cache est également important. Désigné sous le nom de durée de vie (TTL), l'âge maximum de vos ressources mises en cache détermine la durée pendant laquelle l'objet restera dans le cache avant d'être invalidé et invitant l'utilisateur à demander un nouvel objet. Pour les ressources statiques qui ne changent pas beaucoup, vous pouvez définir des valeurs TTL très élevées, généralement autour de deux ans. Pour les éléments que vous souhaiterez peut-être mettre à jour, vous souhaiterez définir des valeurs TTL plus faibles pour éviter que des ressources obsolètes ne restent trop longtemps dans le cache.

Vous pouvez toujours utiliser des noms de fichiers versionnés pour déclencher un rechargement du cache. Si vous publiez une nouvelle version d'une feuille de style CSS, vous pouvez la nommer styles-1.0.1.csset le navigateur de l'utilisateur (et tous les CDN en face de lui) le verront comme un nouveau fichier qui doit être téléchargé à nouveau. De plus, pour certains CDN, vous pouvez émettre des invalidations manuelles pour vider le cache existant sans changer de nom de fichier.

Comment utiliser Cache-Control dans Apache

Cache-Control a quelques options:

  • public – Peut être mis en cache par n'importe qui, y compris les navigateurs et les CDN. Utilisez ceci pour la plupart des objets statiques.
  • private – Contient des données sensibles qui ne peuvent pas être mises en cache par les CDN ou les proxys inverses. Le navigateur de l'utilisateur peut le mettre en cache localement. Utilisez ceci pour la plupart des pages authentifiées.
  • no-cache – Malgré le nom, il ne désactive pas la mise en cache. Le navigateur peut toujours mettre en cache la réponse pour les performances, mais doit vérifier auprès du serveur d'origine les mises à jour avant de l'utiliser. Utilisez cette option si vous souhaitez que l'utilisateur revalide à chaque fois.
  • no-store – Désactive complètement la mise en cache. Utilisez cette option uniquement pour les données hautement sensibles qui ne doivent pas être envoyées deux fois.

De plus, vous pouvez ajouter le no-transform directive, qui désactive toutes les conversions pouvant être effectuées sur la ressource. Par exemple, certains CDN compressent les images pour réduire la bande passante. Cette directive désactive ce comportement.

Dans Apache, vous devrez définir cet en-tête manuellement à l'aide de la Header set directive, comme ceci:

Header set Cache-Control "max-age=84600, public"

le max-age la valeur est définie en secondes, par exemple, max-age=300 pour un TTL de cinq minutes, et max-age=63072000 pendant deux ans.

Vous pouvez placer cette directive à la racine de votre configuration pour l'appliquer à l'échelle du site, mais une meilleure méthode consiste à appliquer les paramètres en fonction du type de fichier. Par exemple, pour définir un TTL élevé pour la plupart des supports statiques, vous pouvez utiliser un FilesMatch bloquer:


  Header set Cache-Control "max-age=63072000, public"

Si vous souhaitez mettre sur liste noire un chemin spécifique pour ne pas être mis en cache par les CDN, vous pouvez utiliser un Directory bloquer:

<Directory "/private">
 Header set Cache-Control "max-age=300, private"
Directory>

Ou faites simplement correspondre un seul fichier:

"protected.html">
Header set Cache-Control "max-age=300, private"
File>

Les blocs avec les correspondances les plus spécifiques auront la priorité sur les correspondances générales de regex, mais vous voudrez vérifier que tout est correctement défini du côté récepteur. Vous pouvez vérifier cela dans les DevTools de Chrome, sous Réseau> En-têtes.

comment-configurer-les-en-tetes-de-controle-du-cache-dans-apache-8819625

Si vous n'avez accès qu'à .htaccess configuration, vous pouvez toujours utiliser la correspondance de répertoire en créant un nouveau .htaccess fichier dans chaque sous-répertoire.

Utilisez Surrogate-Control pour modifier directement le comportement CDN

le Surrogate-Control l'en-tête fonctionne exactement comme Cache-Control, mais détaille des instructions spécifiques pour les CDN et les proxys inverses, plutôt que pour les utilisateurs finaux. De cette façon, vous pouvez dire aux CDN de faire une chose, mais d'envoyer des directions différentes au navigateur.

Vous devrez définir cet en-tête manuellement, de la même manière que vous l'avez défini Cache-Control:

Header set Surrogate-Control "max-age=300, public"

Vous voudrez certainement tester avec votre CDN pour vérifier que cela fonctionne –Surrogate-Control est assez récent et n’est pas universel.

★★★★★