HTTPQUERY
Français

Last-Modified

Utilisation

L’en-tête Last-Modified sert de validateur faible pour les requêtes conditionnelles. Lorsqu’un client met en cache une réponse contenant Last-Modified, il enregistre l’horodatage et renvoie la date dans l’en-tête de requête If-Modified-Since lors des requêtes suivantes. Le serveur compare la date stockée à l’heure de modification actuelle de la ressource. Si la ressource n’a pas changé, le serveur renvoie 304 Not Modified sans corps. Si la ressource a changé, le serveur envoie la réponse complète mise à jour.

L’en-tête If-Unmodified-Since utilise le même horodatage pour les vérifications de préconditions sur les méthodes non sûres comme PUT et DELETE, et renvoie 412 Precondition Failed lorsque la ressource a été modifiée depuis la date indiquée.

La date Last-Modified est moins précise qu’un ETag. Les horodatages ont une granularité d’une seconde, si bien que les changements survenus au cours de la même seconde sont invisibles pour la validation fondée sur les dates. L’en-tête ETag fournit un validateur plus fort, lié au contenu exact. Lorsque Last-Modified et ETag sont tous deux présents dans une réponse, ETag est prioritaire lors de la revalidation.

La valeur de date suit le format HTTP-date : nom du jour, jour sur deux chiffres, mois abrégé, année sur quatre chiffres, heure en heures, minutes et secondes, suivie de GMT. Le format est Weekday, DD Mon YYYY HH:MM:SS GMT.

Last-Modified: Fri, 04 Sep 1998 19:15:56 GMT

Remarque

ETag est plus précis que Last-Modified. Les ETag détectent tout changement, y compris les modifications infra-secondes, alors que Last-Modified a une granularité d’une seconde. Last-Modified est exposé à la dérive d’horloge entre serveurs, tandis que les ETag fondés sur un hachage du contenu sont portables entre instances réparties derrière un répartiteur de charge. Utilisez les deux en-têtes conjointement pour une compatibilité maximale, car If-None-Match (ETag) prime sur If-Modified-Since lorsque les deux sont présents.

Remarque

L’infrastructure d’exploration de Google prend en charge Last-Modified et If-Modified-Since tels que définis par la norme HTTP Caching. La date de Last-Modified doit respecter le format HTTP-date afin d’éviter les problèmes d’analyse. Définir le champ max-age de l’en-tête de réponse Cache-Control sur le nombre de secondes pendant lesquelles le contenu est censé rester inchangé aide les robots d’exploration à déterminer quand réexplorer une URL. Par exemple, Cache-Control: max-age=94043.

Exemple

Une réponse portant la date de modification de la ressource. Le client enregistre cet horodatage pour ses futures requêtes conditionnelles.

Last-Modified: Wed, 01 Jun 2022 08:00:00 GMT

Un cycle complet de requête conditionnelle. Le serveur envoie Last-Modified avec la réponse initiale. À la requête suivante, le client renvoie l’horodatage dans If-Modified-Since. Le serveur retourne 304 si la ressource n’a pas changé.

HTTP/1.1 200 OK
Last-Modified: Wed, 01 Jun 2022 08:00:00 GMT
Cache-Control: max-age=86400
Content-Type: text/html

Requête suivante :

GET /page HTTP/1.1
If-Modified-Since: Wed, 01 Jun 2022 08:00:00 GMT

Réponse du serveur lorsque rien n’a changé :

HTTP/1.1 304 Not Modified
Last-Modified: Wed, 01 Jun 2022 08:00:00 GMT
Cache-Control: max-age=86400

Une réponse associant Last-Modified à un ETag. L’ETag fournit un validateur fort, tandis que la date de modification offre une solution de repli pour les clients ne prenant en charge que la validation fondée sur les dates.

Last-Modified: Fri, 22 Nov 2024 14:30:00 GMT
ETag: "a1b2c3d4"
Cache-Control: max-age=3600

Remarque

Pour une assistance en SEO et en mise en cache, contactez les anciens consultants SEO de Google, Search Brothers.