El cache-control
encabezado es el mecanismo principal para que un servidor HTTP le diga a un proxy de almacenamiento en caché la "actualidad" de una respuesta. (es decir, cuánto tiempo almacenar la respuesta en el caché)
En algunas situaciones, las cache-control
directivas son insuficientes. Aquí se archiva una discusión del grupo de trabajo HTTP , que describe una página que cambia solo con el idioma. Este no es el caso de uso correcto para el encabezado de variación, pero el contexto es valioso para nuestra discusión. (Aunque creo que el encabezado Vary resolvería el problema en ese caso, hay una forma mejor). Desde esa página:
Vary
es estrictamente para aquellos casos en los que es inútil o excesivamente complicado para un proxy replicar lo que haría el servidor.
Un ejemplo artificial:
Su servidor HTTP tiene una gran página de destino. Tiene dos páginas ligeramente diferentes con la misma URL, dependiendo de si el usuario ha estado allí antes. Distingue entre las solicitudes y el "recuento de visitas" de un usuario según las cookies. Pero, dado que la página de destino de su servidor es tan grande, desea que los proxies intermediarios almacenen la respuesta en caché si es posible.
Los encabezados URL, Last-Modified y Cache-Control son insuficientes para brindar esta información a un proxy de almacenamiento en caché, pero si agrega Vary: Cookie
, el motor de caché agregará el encabezado Cookie a sus decisiones de almacenamiento en caché.
Finalmente, para sitios web dinámicos con poco tráfico, siempre he encontrado lo simple Cache-Control: no-cache, no-store
y Pragma: no-cache
suficiente.
Editar: para responder con mayor precisión a su pregunta: el encabezado de solicitud HTTP 'Aceptar' define los tipos de contenido que un cliente puede procesar. Si tiene dos copias del mismo contenido en la misma URL, que solo difieren en el tipo de contenido, entonces el uso Vary: Accept
podría ser apropiado.
Actualización 11 de septiembre 12:
Incluyo un par de enlaces que han aparecido en los comentarios desde que este comentario se publicó originalmente. Ambos son recursos excelentes para ejemplos (y problemas) del mundo real con Vary: Accept; Si está leyendo esta respuesta, también debe leer esos enlaces.
El primero, del destacado EricLaw, sobre el comportamiento de Internet Explorer con el encabezado Vary y algunos de los desafíos que presenta a los desarrolladores: El encabezado Vary evita el almacenamiento en caché en IE . En resumen, IE (anterior a IE9) no almacena en caché ningún contenido que use el encabezado Vary porque el caché de solicitud no incluye encabezados de solicitud HTTP. EricLaw (Eric Lawrence en el mundo real) es un administrador de programas en el equipo de IE.
El segundo es de Eran Medan, y es una discusión en curso sobre el comportamiento inesperado relacionado con Vary en Chrome: Backing no maneja el encabezado Vary correctamente . Está relacionado con el comportamiento de IE, excepto que los desarrolladores de Chrome adoptaron un enfoque diferente, aunque no parece haber sido una elección deliberada.