Tengo contenido estático con Max-Age
encabezados de control de caché adjuntos para que los clientes almacenen en caché el contenido estático. Sin embargo, IIS 7.5 aún envía este encabezado cuando hay respuestas de error que aconsejan al cliente que lo guarde en caché.
Tiene el efecto negativo de que algunos servidores proxy almacenarán en caché esa respuesta de error. Podría, Vary: Accept,Accept-Encoding
pero esto realmente no aborda el problema raíz de Max-Age
salir con respuestas de error.
La web.config
sección de IIS relevante actual es:
<configuration>
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
</staticContent>
</system.webServer>
</configuration>
¿Hay alguna manera de hacerlo para que no le digamos a los clientes o representantes que guarden en caché los códigos de error 400/500?
Respuestas:
Creé una "suite" de prueba rudimentaria.
Cuando ejecuto las pruebas con un mínimo de Web.config en IIS 7.0 (modo de tubería integrada en .NET 4.0) todo pasa; el
Cache-Control
encabezado de respuesta del archivo de prueba está configuradoprivate
cuando elAccept
encabezado de su solicitud no coincide con el del archivoContent-Type
.Esto me lleva a creer que tiene algún módulo que interrumpe la rutina de almacenamiento en caché estático de IIS o que IIS 7.0 y 7.5 difieren aquí.
Aquí están los archivos que usé (sin ellos,
some-script.js
ya que es solo un archivo vacío):Web.Config:
test.html:
fuente
debe especificar qué tipo de contenido va a almacenar en caché. por ejemplo, puede almacenar en caché Scripts, css, image ..etc. así que usa la
<location path ="Scripts">
etiqueta antes de la<system.webServer>
etiqueta. entonces su configuración web se ve así.fuente