HTTP 304 Not Modified

Le validateur de cache : rien n'a changé depuis votre dernière visite, continuez à utiliser la copie que vous avez déjà.

Ce que signifie HTTP 304

HTTP 304 Not Modified est la réponse à une requête conditionnelle. Le client dit « j'ai une copie datant de telle date » (If-Modified-Since) ou « avec cette empreinte » (If-None-Match), et le serveur confirme que la copie est toujours à jour en répondant 304 sans corps.

Ce mécanisme — la revalidation de cache — est ce qui rend les chargements de page répétés rapides : le navigateur ne retélécharge que ce qui a changé, et tout le reste ne coûte qu'un seul petit aller-retour.

Causes courantes des réponses 304

  • Le navigateur a revalidé une page, un script ou une image en cache et cela n'avait pas changé.
  • Un edge CDN a revalidé son objet stocké auprès de l'origine.
  • Un client d'API a utilisé les ETags pour interroger une ressource à moindre coût.

Bonnes pratiques pour les développeurs

  • Servez des en-têtes ETag ou Last-Modified stables afin que les clients puissent revalider correctement.
  • N'incluez pas de corps de réponse avec 304 — le client l'a explicitement déjà.
  • Méfiez-vous des ETags qui changent à chaque réponse (par exemple issus de serveurs équilibrés en charge avec des hachages par nœud) : ils désactivent silencieusement la revalidation.

Exemple de réponse

GET /styles.css HTTP/1.1
If-None-Match: "abc123"

HTTP/1.1 304 Not Modified
ETag: "abc123"
Cache-Control: max-age=3600

Impact SEO

Les réponses 304 sont bonnes pour la performance SEO : Googlebot utilise abondamment les requêtes conditionnelles, et une revalidation correcte lui permet de crawler davantage de votre site pour le même budget. Des validateurs cassés forcent des retéléchargements complets à chaque crawl.

FAQ

Une réponse 304 est-elle une erreur ?

Non — c'est un signal de succès signifiant que votre copie en cache est toujours valide. Les navigateurs le gèrent de manière transparente.

Qu'est-ce qui déclenche une réponse 304 ?

Une requête portant des en-têtes If-None-Match ou If-Modified-Since dont les valeurs correspondent encore à la ressource actuelle.

Pourquoi je vois 304 dans DevTools au lieu de 200 ?

Le navigateur avait une copie en cache et l'a revalidée. Le statut montre que le serveur a confirmé le cache au lieu de renvoyer le fichier.