L' cache-control
- tête est le principal mécanisme pour un serveur HTTP à dire un proxy cache la "fraîcheur" d'une réponse. (c'est à dire, comment/si long pour stocker la réponse dans le cache)
Dans certaines situations, cache-control
directives sont insuffisantes. Une discussion à partir de l'adresse HTTP du groupe de travail est archivé ici, description d'une page qui ne change que par le langage. C'est pas le bon cas d'utilisation de l'en-tête vary, mais le contexte est précieux pour notre discussion. (Bien que je crois que l'en-tête Vary permettrait de résoudre le problème dans ce cas, il ya une Meilleure Façon.) À partir de cette page:
Vary
est strictement pour les cas où il est impossible ou excessivement compliqué pour un proxy de reproduire ce que le serveur allait faire.
- Cette page décrit l'en-tête d'utilisation du serveur de point de vue, cela l'une à partir d'un proxy cache point de vue. Il est destiné à spécifier un ensemble d'en-têtes de requête HTTP que déterminer l'unicité d'une demande.
Un exemple artificiel:
Votre serveur HTTP a une grande page de destination. Vous avez deux légèrement différentes pages avec la même URL, selon si l'utilisateur a été là avant. Vous faites une distinction entre les demandes et un utilisateur "nombre de visites" basé sur des Cookies. Mais, depuis votre serveur de la page de destination est si grand, que vous souhaitez intermédiaire des procurations pour mettre en cache la réponse si possible.
L'URL, de Dernière modification et de Contrôle du Cache-têtes sont insuffisantes pour donner cette idée à un proxy cache, mais si vous ajoutez Vary: Cookie
, le moteur de cache va ajouter l'en-tête de Cookie à la mise en cache des décisions.
Enfin, pour les petits trafics, des sites web dynamiques -- j'ai toujours trouvé le simple Cache-Control: no-cache, no-store
et Pragma: no-cache
suffisant.
Edit -- pour plus de répondre précisément à votre question: la tête de requête HTTP "Accepter" définit le Contenu-Type d'un client peut traiter. Si vous avez deux copies de la même contenu à la même URL, ne différant que par le Type de Contenu, puis à l'aide de Vary: Accept
pourrait être approprié.
Mise À Jour 11 Sep 12:
Je suis, y compris un couple de liens qui ont paru dans les commentaires, car ce commentaire a été posté. Ils sont tous les deux d'excellentes ressources pour les exemples du monde réel (et les problèmes) avec Vary: Accept; I si vous êtes à la lecture de cette réponse dont vous avez besoin pour lire ces liens.
La première, de la circulation EricLaw, sur Internet Explorer comportement avec l'en-tête Vary et certains des défis qu'il présente pour les développeurs: l'en-Tête Vary Empêche la mise en Cache de IE. En bref, c'est à dire (pré IE9) ne cache pas tout le contenu qui utilise l'en-tête Vary, car la demande de cache ne comprend pas-têtes de Requête HTTP. EricLaw (Eric Laurent dans le monde réel) est un chef de Programme de l'IE de l'équipe.
La seconde est de Eran Medan, et la discussion de Varier liées à un comportement inattendu dans google Chrome: la Sauvegarde ne gère pas Varier en-tête correctement. C'est lié à IE comportement, à l'exception du Chrome devs ont pris une approche différente, même s'il ne semble pas avoir été un choix délibéré.