92 votes

If-modified-since vs if-none-match

Quelle serait la différence entre if-modified-since et if-none-match ? J’ai le sentiment qu’if-none-match est utilisé pour les fichiers alors qu’if-modified-since est utilisé pour les pages ?

114voto

trendels Points 2929

Concernant les différences entre Last-Modified/If-Modified-Since et ETag/If-None-Match:

Les deux peuvent être utilisés de façon interchangeable. Toutefois, selon le type de ressource, et comment il est généré sur le serveur, l'une ou l'autre question ("cela a été modifié depuis ...?" / "est-ce toujours correspondre à ce ETag?") peut-être plus facile de répondre.

Exemples:

  • Si vous servez des fichiers, à l'aide du fichier mtime le Last-Modified date est la solution la plus simple.
  • Si vous recherchez une page web dynamique construit à partir d'un certain nombre de requêtes SQL, de vérifier si les données renvoyées par une de ces requêtes a changé peut-être impossible (à moins que tous ont une sorte de "dernière modification" de la colonne). Dans ce cas, en utilisant par exemple un hachage md5 du contenu de la page que l' ETag sera beaucoup plus facile.
    Otoh, que, cela signifie que vous avez encore à générer l'ensemble de la page sur le serveur, même pour un conditionnelle OBTENIR. Déterminer exactement ce qui doit aller dans l'ETag (clés primaires, les numéros de révision, ... etc). vous pouvez économiser beaucoup de temps ici.

Voir ces liens pour plus de détails sur le sujet:

22voto

Gumbo Points 279147

If-Modified-Since est par rapport à l' Last-Modified alors qu' If-None-Match est comparé à d' ETag. Les deux Modified-Since et ETag peut être utilisée pour identifier une variante spécifique d'une ressource.

Mais la comparaison des If-Modified-Since de Last-Modified vous donne les informations de déterminer si la mise en cache variante est plus vieux ou plus récent alors que la comparaison des If-None-Match de ETag vous donne juste l'information si les deux sont identiques ou pas. En outre, la plupart des ETag générateurs d'inclure les informations du système d' inode donc le déplacement d'un fichier vers un autre lecteur est peut modifier l' ETag .

13voto

Alex K Points 395

Valeur d’horodatage utilisé dans Last-Modified/If-Modified-Since a limité la précision - une seconde et ce n’est pas suffisant pour un changement rapide contenu comme, par exemple, application de Web-chat où plus d’un message a pu être publié à toute donnée seconde. ETag/If-None-Match peut aider à résoudre ce problème.

11voto

Dionysios Points 251

Comme il est dit dans les meilleures pratiques de google :

Il est important de spécifier l’un des Expires ou contrôle de Cache max-age et de Last-Modified ou ETag, pour toutes les ressources cachables. Il est superflu de spécifier Expires et Cache-Control : max-age, ou à spécifier à la fois Last-Modified et ETag.

https://developers.Google.com/Speed/docs/Best-Practices/Caching

6voto

Matthew Flaschen Points 131723

If-Modified-Since utilise une date, tandis que If-None-Match utilise un ETag. Ils peuvent tous deux être utilisés pour « pages » (p. ex. HTML) et d’autres fichiers.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X