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.

Diagramme en deux colonnes. Colonne 1 : première requête, GET /app.js, réponse 200, ETag v42, body téléchargé. Colonne 2 : requête suivante, GET avec If-None-Match v42, comparaison côté serveur, réponse 304 Not Modified, pas de body, copie locale réutilisée.
Le schéma montre comment ETag évite de retélécharger une ressource inchangée en validant la copie locale avec If-None-Match.

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.

Dans le même esprit

À lire ensuite