11 votes

Quelle est la signification de l'en-tête HTTP Vary:*.

Pour autant que je sache, l'en-tête HTTP Vary spécifie une liste d'en-têtes HTTP séparés par des virgules qui doivent être pris en compte par les caches avec l'URL lorsqu'ils décident si une demande est un succès ou un échec du cache.

Si cet en-tête est omis, cela signifie que seule l'URL sera prise en compte.

Mais que se passe-t-il lorsque l'en-tête est Vary:* ?

RFC 2616 14.4

Une valeur de champ Vary de *** signale que des paramètres non spécifiés ne sont pas ne se limitant pas aux en-têtes de la demande (par exemple, l'adresse réseau de l'utilisateur). client), jouent un rôle dans la sélection de la représentation de la réponse. La valeur * NE DOIT PAS être générée par un serveur mandataire. générée par un serveur d'origine.

RFC 2616 13.6

Une valeur de champ d'en-tête Vary de * ne correspond pas toujours et les suivantes les demandes ultérieures sur cette ressource ne peuvent être interprétées correctement que par le serveur d'origine.

Cela signifie-t-il que toutes les requêtes avec cet en-tête vont manquer le cache ?

J'ai découvert qu'ASP.NET renvoie cet en-tête HTTP si vous utilisez leur OutputCacheAttribute et vous devez désactiver explicitement ce comportement si vous ne voulez pas l'en-tête, ou si vous voulez spécifier des en-têtes personnalisés, donc je (veux) croire que c'est peu probable.

Quelle est la signification pratique de Vary:* ?

Merci.

7voto

Jan Algermissen Points 2915

Vary:* indique aux caches que la réponse a été choisie en fonction d'aspects dépassant les aspects habituels de la négociation du contenu HTTP (par exemple Accept, Accept-Language, Accept-Charset).

En fait, cela indique au cache de ne pas mettre en cache la réponse. C'est la signification de "les demandes ultérieures sur cette ressource ne peuvent être correctement interprétées que par le serveur d'origine". Le cache doit transmettre ces demandes au serveur d'origine.

Edit : Vary est orthogonal à la mise en cache. Considérez ceci :

GET /foo HTTP/1.1

200 Ok Cache-Control : maxage=60 Content-Location : /foo.html Vary : *

Vary:* indique aux caches que la réponse ne peut pas être mise en cache pour les requêtes vers /foo. Mais grâce à l'en-tête Content-Location, les caches peuvent toujours stocker la réponse pour les requêtes vers /foo.html.

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