2012-06-22 10 views
5

Tengo el siguiente método de acción:MVC3 OutputCache VaryByHeader = cookie no está estableciendo

[HttpGet, Authorize, OutputCache(Duration = 60, VaryByHeader = "Cookie", Location = OutputCacheLocation.Any)] 
public ActionResult Index() 

Pero cuando hago una petición, estos son los encabezados emitidos:

Cache-Control: private, max-age=60, s-maxage=0 
Content-Type: text/html; charset=utf-8 
Content-Encoding: gzip 
Expires: Fri, 22 Jun 2012 09:56:32 GMT 
Last-Modified: Fri, 22 Jun 2012 09:55:32 GMT 
Vary: Accept-Encoding 

Por qué no es incluyendo el encabezado Cookie en el Vary?

He intentado muchas variaciones de la configuración OutputCache pero fue en vano :(

Respuesta

0

Así que la respuesta es incluido en el enlace por Andrew Bullock url "nombre de archivo de página", también conocido como "la compresión iis sobrescribe el encabezado variable".

Pero desde diciembre de 2013 está disponible una revisión (se encuentra en el enlace Andrew Bullock). Como de costumbre, este hotfi x puede incluirse en parches regulares, así que asegúrese de que aún lo necesita antes de aplicarlo.

Y como es la "mejor práctica" para suministrar de forma explícita sobre enlaces en lugar de sólo suple el enlace (en caso de que la página va hacia abajo), aquí está un resumen:

IIS compresión dinámica sobrescribe la cabecera Vary. Esto parece aplicarse a IIS de la versión 5 a la versión 8 incluida (cuando se acumula información del blog msdn y de msdn kb). Deshabilite la compresión dinámica de IIS o intente aplicar la revisión disponible en http://support.microsoft.com/kb/2877816/en-us si es necesario. (Este problema puede solucionarse mediante parches regulares en la serie Windows 8.1/2012 R2. La revisión está disponible desde IIS 7, probado personalmente en win7 sp1, aún no está en mis servidores)

En mi caso específico, tuve también otro problema: asp.net no emitía ningún encabezado Vary (compresión habilitada o no) con outputCachelocation establecido en Client. Establecerlo en Downstream "resuelve" este problema adicional. Pero, por supuesto, esto tiene el efecto secundario de cambiar Cache-Control de private a public. (Ahora se puede guardar en caché en el proxy en lugar de solo en el navegador del cliente.)

Cuestiones relacionadas