2011-12-05 14 views
6

No estoy seguro de lo que estoy haciendo mal pero a pesar de todo lo que he intentado, parece que no puedo hacer que los clientes almacenen en caché mis recursos estáticos.Caché definida del cliente parece ser ignorada

En mi web.config, he añadido la siguiente entrada:

<staticContent> 
    <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" /> 
    </staticContent> 

Según la documentación, este debe enviar una cabecera de respuesta al navegador del cliente para que éste sepa que queremos mantener el contenido estático almacenado en caché durante 30 días.

Si uso el violín para ver qué está recibiendo el cliente, parece que mi adición a web.config se ignora por completo.

A continuación se muestra lo que el violinista está informando:

Cache-Control: no-cache 
Date: Mon, 05 Dec 2011 14:09:44 GMT 
Expires: -1 
Pragma: no-cache 
Vary: Accept-Encoding 

que no tienen ninguna cabecera en IIS anulando esto, así que no estoy seguro de qué es lo que me falta. Cualquier ayuda sería muy apreciada.

Respuesta

6

Me rompí esto, pero tomó un tiempo. Está intentando forzar 304s desde el servidor (sin cambios). Difiere con las versiones de IIS.

Se logra mejor por tener todo lo que está contenido estático en un directorio (por ejemplo content por lo que tendría /content/css/content/js etc)

A continuación, sólo tiene que asegurarse de que todo bajo el directorio no expira para, decir, 30 días.

IIS7

mucho más fácil. La manera más fácil: agregue un web.config al directorio de contenido mencionado anteriormente. Este web.config tendrá sólo la Directiva expira:

<system.webServer> 
    <staticContent> 
     <clientCache 
      cacheControlMaxAge="30.00:00:00" 
      cacheControlMode="UseMaxAge" /> 
    </staticContent> 
</system.webServer> 

IIS6

Tendrá que manipular la metabase. No es XML en IIS6, siga las instrucciones aquí: IIS6 ETags metabase commands

Utilizamos tanto lo anterior como la simple visualización de firebug que muestra 304s.

+0

Antes que nada, gracias por su ayuda. Obtengo los 304 como usted señala arriba, pero agregar el archivo web.config en la carpeta de contenido no hizo una gran diferencia. Intenté agregar el nuevo archivo web.config a la carpeta/Content y terminé obteniendo 500 errores (_Hay un problema con el recurso que está buscando y no se puede mostrar_). También lo moví a la carpeta donde está el recurso:/Content/css y el archivo css ahora se recuperó correctamente pero con el encabezado sin memoria caché otra vez. – Yag

+0

Parece que esto puede ayudar a http://stackoverflow.com/questions/5385714/deploying-website-500-internal-server-error routing tal vez .... – penderi

Cuestiones relacionadas