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.