2010-06-10 12 views
19

Acabo de ejecutar Google's Page Speed aplicación contra nuestro sitio y una de las recomendaciones fue Aprovechar caché del navegador. La expansión de este reveló lo siguiente:Preguntar a los navegadores para almacenar en caché nuestras imágenes (ASP.NET/IIS)

Los siguientes recursos cacheables tienen una vida corta frescura: especificar un vencimiento al menos una semana en el futuro de los siguientes recursos:

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

¿Cómo hago para alargar la "vida útil de la frescura" de imágenes particulares?

Se trata de un proyectoASP.NET que se ejecuta en IIS7.5

+0

¿Alguien tiene una buena respuesta para esto? :( –

Respuesta

49

he encontrado la respuesta a mi pregunta en otro lugar en este sitio. ¡Woot! (. No sé por qué no apareció cuando me envió este, pero no importa, llegué al final)

Para los interesados, la respuesta era esto (tal como fue anunciado por Gabriel McAdams):


Lo hace 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 para tener una expira cabecera HTTP se establece en el año 2020. El contenido estático significa algo que no es servido por el motor ASP.NET, como imágenes, archivos de comandos y las hojas de estilos.

O utilizar una caducidad relativa, utilice esto:

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

Esto hará que todo el contenido estático para tener un expira cabecera HTTP se establece en 2 días.

+3

La velocidad de nuestro sitio acaba de aumentar en un 400%. ¡Hurra! –

+0

¿Te di una respuesta diferente a esta? La configuración que he escrito hace exactamente lo mismo. Y además tu respuesta fue específica para imágenes particulares. –

+9

Um, qué? 1. No explicaste nada, acabas de publicar a alguien la respuesta de otra persona de otra pregunta 2. No explicó qué contenido se vería afectado, incluso cuando lo pedí específicamente Editar: Parece que acaba de agregar eso 3. Establecer una fecha en el futuro no es una solución útil para mi situación. No puedo creer que hayas marcado mi respuesta. Eso es increíblemente cojo. Pero lo que sea. –

3

Usted tendrá que añadir encabezado Caduca a su contenido estático incluyendo imágenes, html, js, css. Usted puede agregar fácilmente la cabecera expira en system.webServer sección usando IIS7 de su web.config:

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

Desafortunadamente, su respuesta me ha dejado perplejo :(¿Afectará TODO el contenido que entregamos al usuario? ¿Cómo especificamos imágenes particulares, como lo hice en mi pregunta? (Aunque creo que * podría * ser útil para obtener el navegador para almacenar todo en caché ...) –

+0

Ojalá pudiera haberte dado una respuesta sobre este lo siento por mis limitaciones en la plataforma ASP e IIS. Sé que hay un archivo .htaccess para esto en apache. Pero de todos modos, ¿por qué solo quieres que algunas de tus imágenes estén en caché y no todas? ¿Qué diferencia hace eso? –

+0

Me temo que no respondió mi pregunta :(¿Esto afectará TODO el contenido que entregamos al usuario? Gracias. –

1

Lo que normalmente desea es almacenar en caché todos los activos (css, js e imágenes), el archivo html tendrá çache busting links para que 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é permanentemente.

<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> 
Cuestiones relacionadas