Aller au contenu principal
PlateformWeb Audits

Activer le cache navigateur et la compression HTTP

Le cache navigateur et la compression HTTP réduisent la quantité de données transférées à chaque visite : le premier évite de retélécharger les fichiers déjà reçus, la seconde compacte ceux qui sont envoyés. Notre audit relève les ressources statiques servies sans consigne de cache, avec un cache désactivé ou inférieur à une heure, ainsi que les ressources textuelles envoyées sans gzip ni brotli.

Activer la compression gzip ou brotli

La compression concerne les fichiers texte : HTML, CSS, JavaScript, JSON, SVG. Les images JPEG, PNG, WebP ou AVIF sont déjà compressées et ne gagnent rien à l'être de nouveau.

Apache (mod_deflate)

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml
    AddOutputFilterByType DEFLATE application/javascript application/json image/svg+xml
</IfModule>

Nginx

gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/css text/plain text/xml application/javascript application/json image/svg+xml;

Brotli compresse un peu mieux que gzip mais demande un module supplémentaire sur Apache et Nginx. Chez beaucoup d'hébergeurs ou de CDN, il s'active d'une case à cocher. Le HTML est compressé par défaut dès que gzip on est présent.

Définir la durée de cache des fichiers statiques

Une ressource sans en-tête Cache-Control ni Expires est retéléchargée ou revalidée trop souvent. L'audit signale trois cas : aucune consigne, cache explicitement désactivé (no-store, no-cache, max-age=0), et durée inférieure à une heure.

  • Fichiers dont le nom change quand le contenu change (par exemple app.3f9a1c.js) : un an et immutable.
  • Fichiers au nom fixe (par exemple logo.webp) : une durée plus courte, de quelques jours à un mois, pour que les modifications se propagent.
  • Pages HTML : ne leur appliquez pas un cache long.

Apache

<IfModule mod_headers.c>
    <FilesMatch "\.(css|js|woff2|webp|avif|png|jpe?g|svg)$">
        Header set Cache-Control "public, max-age=2592000"
    </FilesMatch>
</IfModule>

Nginx

location ~* \.(css|js|woff2|webp|avif|png|jpe?g|svg)$ {
    add_header Cache-Control "public, max-age=2592000";
}

Ces exemples fixent 30 jours (2 592 000 secondes). Passez à max-age=31536000, immutable uniquement si vos fichiers sont versionnés par leur nom. Sous WordPress, un plugin de cache (WP Rocket, W3 Total Cache, LiteSpeed Cache) pose généralement ces règles automatiquement.

Garder les connexions ouvertes et activer HTTP/2

L'audit vérifie aussi que le serveur maintient la connexion ouverte entre deux requêtes (keep-alive) et qu'il parle HTTP/2 ou HTTP/3, qui envoient plusieurs fichiers en parallèle sur une seule connexion.

# Apache : module mod_http2
Protocols h2 http/1.1
KeepAlive On

# Nginx (selon la version : "listen 443 ssl http2;" avant la 1.25.1)
listen 443 ssl;
http2 on;

La plupart des hébergeurs et des CDN modernes l'activent déjà ; sinon, c'est une option du panneau d'administration.

Vérifier

Dans l'onglet Réseau des outils du navigateur, cliquez sur un fichier CSS : l'en-tête de réponse Content-Encoding doit valoir gzip ou br, et Cache-Control doit afficher la durée choisie. Au deuxième chargement, les fichiers doivent venir du cache. Relancez ensuite l'audit. Pour agir sur le contenu même des pages, voir le guide optimiser les images.

Sans compte, en 30 secondes

Vérifiez où en est votre site avant et après la correction.

Auditer mon site gratuitement →