Concepts expliqués ~1 min de lecture
À quoi sert vraiment ETag dans HTTP
Pourquoi le navigateur retélécharge parfois un fichier inchangé ? Souvent, le problème n’est pas le cache. C’est l’absence de validation conditionnelle.

ETag est un mécanisme HTTP de validation conditionnelle. Le serveur associe un identifiant à une représentation de ressource, puis le client peut renvoyer cet identifiant dans If-None-Match lors d’une requête suivante.
Si la ressource n’a pas changé, le serveur répond 304 Not Modified sans body. Le client réutilise alors sa copie locale. L’intérêt n’est pas seulement le cache en soi, mais la possibilité de confirmer qu’une copie existante est toujours valide sans retransférer tout le contenu.
Exemple simple : /app.js répond avec ETag: "v42". À la requête suivante, le navigateur envoie If-None-Match: "v42". Si le fichier n’a pas changé, la réponse est 304. Sinon, le serveur renvoie 200 avec le nouveau body et un nouvel ETag, par exemple "v43".
Le cache conserve la copie ; ETag sert à la valider proprement.