2011-06-06 12 views
11

Tenemos un proyecto de Webforms con enrutamiento url. He definido rutas de excepción para las imágenes y archivos CSS-comoObtenga Asp.net/iis para establecer el control de caché: max-age para archivos estáticos

routes.Add("IgnoreImages", new Route("img/{*pathInfo}", new StopRoutingHandler())); 
routes.Add("IgnoreCss", new Route("css/{*pathInfo}", new StopRoutingHandler())); 

archivos estáticos por lo que deben ser servidos por IIS directa y enrutamiento deben ser anuladas.

Al verificar la respuesta de una imagen con Fiddler, la única clave debajo del encabezado Caché es Fecha. Lo que falta es la clave Cache-control: max: age. ¿Cómo puedo especificar la política de almacenamiento en caché para archivos estáticos? La aplicación se ejecuta en IIS7.5.

Respuesta

21

La solución está utilizando la sección system.webserver en el archivo web.config para configurar el almacenamiento en caché (y la compresión) del servidor. Aquí es un punto de partida: http://www.iis.net/ConfigReference/system.webServer/staticContent/clientCache

Ejemplo:

<configuration> 
    <system.webServer> 
    <staticContent> 
     <clientCache cacheControlMode="UseMaxAge" 
     cacheControlMaxAge="1.00:00:00" /> <!-- 1 day --> 
    </staticContent> 
    </system.webServer> 
</configuration> 
11

respuesta de Darío me tiene la mayor parte del camino, pero he tenido que añadir un atributo a <clientCache>, cacheControlCustom="public", de lo contrario IIS no envió a la cabecera Cache-Control al navegador. Ver this answer.

Cuestiones relacionadas