habilitar control cache asp.net caching iis browser browser-cache

control - Pedir a los navegadores que guarden en caché nuestras imágenes(ASP.NET/IIS)



web config cache control (3)

Acabo de ejecutar la aplicación Page Speed ​​de Google en nuestro sitio y una de las recomendaciones fue aprovechar el almacenamiento en caché del navegador . Expandiendo esto se reveló lo siguiente:

Los siguientes recursos de almacenamiento en caché tienen una vida útil corta: especifique una caducidad de al menos una semana en el futuro para los siguientes recursos:

< una larga lista de imágenes >
< algunos archivos javascript >

¿Cómo hago para alargar el "tiempo de vida de frescura" de imágenes particulares?

Es un proyecto ASP.NET que se ejecuta en IIS7.5


Encontré la respuesta a mi pregunta en otra parte de este sitio. Woot! (No estoy seguro de por qué no apareció cuando publiqué esto por primera vez, pero no importa, llegué al final).

Para aquellos interesados, la respuesta fue esta (según lo publicado por Gabriel McAdams ):

Lo haces en IIS. Si está utilizando IIS 7, puede agregar el encabezado en su web.config. Está en la sección system.webServer.

<staticContent> <clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires" /> </staticContent>

Esto hará que todo el contenido estático tenga un encabezado HTTP caducado establecido para el año 2020. El contenido estático significa que todo lo que no se sirve a través del motor ASP.NET, como imágenes, archivos de script y hojas de estilos.

O para usar una expiración relativa, usa esto:

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

Esto hará que todo el contenido estático tenga un encabezado HTTP caducado establecido en 2 días.


Lo que normalmente desea es almacenar en caché todos los recursos (css, js e imágenes), el archivo html tendrá enlaces que destruyen los archivos para que aún pueda actualizar las imágenes.

Para que esto funcione, los archivos html no pueden formar parte de staticContent . Agregar un nuevo controlador para archivos html evita que se almacenen en caché de forma permanente.

<staticContent> <clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires" /> </staticContent> <handlers> <add name="HtmlHandler" path="*.html" verb="*" type="System.Web.Handlers" preCondition="integratedMode" /> </handlers>


Tendrá que agregar el encabezado Expires a su contenido estático, incluidas las imágenes, html, js, css. Puede agregar fácilmente el encabezado de caducidad en la sección system.webServer su web.config usando IIS7:

<staticContent> <clientCache httpExpires="Mon, 1 May 2020 05:00:00 GMT" cacheControlMode="UseExpires" /> </staticContent>