Base de connaissances

1 000 FAQ, 500 tutoriels et vidéos explicatives. Ici, il n'y a que des solutions !

Utiliser des en-têtes pour optimiser la mise en cache des ressources

Ce guide explique comment optimiser la mise en cache des ressources web grâce aux en-têtes HTTP.

 

Préambule

  • Une bonne stratégie de cache permet d'améliorer significativement les performances de votre site en évitant de retransmettre inutilement des fichiers inchangés.
  • La mise en cache web repose sur deux mécanismes complémentaires :
    1. La durée de validité du cache (via l'en-tête Expires) qui indique combien de temps une ressource peut être réutilisée sans contacter le serveur.
    2. La validation conditionnelle (via les en-têtes Last-Modified/If-Modified-Since) qui permet de vérifier si une ressource a changé avant de la retélécharger.

 

Configuration de la durée de cache avec Expires

L'en-tête Expires permet de spécifier une durée pendant laquelle le navigateur peut réutiliser directement les ressources depuis son cache local. Voici comment le configurer dans votre fichier .htaccess :

  1. Créez ou ouvrez le fichier .htaccess à la racine de votre site (généralement dans /web ou /sites/domain.xyz).
  2. Ajoutez la configuration du module expires :

    <IfModule mod_expires.c>
  3. Définissez les durées de cache appropriées pour chaque type de ressource :

    ExpiresActive On
    ExpiresByType text/html "access plus 1 week"
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"

    Ces directives signifient que :

    • Les pages HTML seront conservées en cache pendant une semaine.
    • Les images JPEG, fichiers CSS et JavaScript seront gardés pendant un mois.

    Adaptez ces durées selon la fréquence de mise à jour de vos ressources.

  4. Fermez la section de configuration :

    </IfModule>

 

Validation conditionnelle avec Last-Modified

Même lorsqu'une ressource a expiré dans le cache, il n'est pas toujours nécessaire de la retélécharger complètement. Le mécanisme de validation conditionnelle permet au navigateur de vérifier si sa version en cache est toujours à jour. Ce processus fonctionne ainsi :

  1. Le serveur envoie automatiquement un en-tête Last-Modified avec chaque ressource, indiquant sa date de dernière modification.
    • Apache gère cela nativement pour les fichiers statiques - aucune configuration supplémentaire n'est nécessaire.
  2. Lorsque le navigateur demande à nouveau la ressource, il envoie un en-tête If-Modified-Since contenant la date qu'il a en cache :

    GET /resource HTTP/1.1
    Host: www.example.com
    If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT
  3. Le serveur compare cette date avec la date réelle de modification du fichier :
    • Si le fichier n'a pas changé, il renvoie simplement un code 304 Not Modified, économisant ainsi de la bande passante.
    • Si le fichier a été modifié, il renvoie la nouvelle version avec un code 200 OK.

Cette FAQ a été utile?