2010-09-04 15 views
21

Estoy ejecutando Google PageSpeed ​​en mi sitio y me dice que necesito
"Especificar un validador de caché"..htaccess: Cómo "Especificar un validador de caché"?

En los siguientes recursos falta un validador de caché. Los recursos que no especifican un validador de caché no se pueden actualizar de manera eficiente. Especificar un Last-Modified o ETag cabecera para activar la validación de caché para los siguientes recursos:

... a continuación, enumera las imágenes, CSS, JS, etc

Según http://code.google.com/speed/page-speed/docs/caching.html#LeverageBrowserCaching:

Conjunto la fecha de Última modificación a la última vez que se modificó el recurso. Si la fecha de Última modificación es lo suficientemente larga en el pasado, es probable que el navegador no vuelva a buscarla.

Tengo el siguiente en mi .htaccess:

<IfModule mod_headers.c> 
    <FilesMatch "\.(bmp|css|flv|gif|ico|jpg|jpeg|js|pdf|png|svg|swf|tif|tiff)$"> 
     Header set Last-Modified "Tue, 31 Aug 2010 00:00:00 GMT" 
    </FilesMatch> 
</IfModule> 

¿Qué estoy haciendo mal?

Respuesta

15

Creo que el problema que está teniendo es con Expire: y no con Last-Modified:. Apache enviaba por defecto el encabezado Last-Modified: del archivo según la fecha del archivo. Sugiero eliminar el código superior y su sustitución por el siguiente:

<IfModule mod_expires.c> 
    ExpiresActive On 
    ExpiresDefault "access plus 1 year" 
</IfModule> 

intento con que, si no funciona, trate de añadir esto también:

<IfModule mod_headers.c> 
    <FilesMatch "\.(bmp|css|flv|gif|ico|jpg|jpeg|js|pdf|png|svg|swf|tif|tiff)$"> 
     Header set Last-Modified "Mon, 31 Aug 2009 00:00:00 GMT" 
    </FilesMatch> 
</IfModule> 
+0

Ya tengo cosas como: ExpiresByType text/css "access plus 1 year" en mod_expires. ¿Cualquier otra sugerencia? – StackOverflowNewbie

+0

prueba el nuevo 'Header set Last-Modified" Lun, 31 Aug 2009 00:00:00 GMT "' en lugar del que tienes, ¡este es un año más viejo! – aularon

+0

Probé, no hizo diferencia. ¿Alguna otra idea? – StackOverflowNewbie

5

Con el fin de "Establecer una caché validador" que necesita para enviar el siguiente en sus cabeceras:

ExpiresoCache-Control: max-age

Y

Last-ModifiedoETag

Así, por ejemplo, en PHP se podría añadir lo siguiente para los archivos CSS y JS:

<filesMatch "\.(js|css)$"> 
    Header set Expires "Thu, 21 May 2013 20:00:00 GMT" 
    Header set Last-Modified "Thu, 21 May 2012 20:00:00 GMT" 
</filesMatch> 

Esto satisfará calculadora Pagespeed de Google.

1

He probado todos los códigos anteriores, pero no veo ningún cambio en el rango de gtmetrix. El uso de este mejorada Cache-Control (Especificar un validador de caché) rango para mi sitio de WordPress:

## EXPIRES CACHING ## 
<IfModule mod_expires.c> 
ExpiresActive On 
ExpiresByType image/jpg "access 1 year" 
ExpiresByType image/jpeg "access 1 year" 
ExpiresByType image/gif "access 1 year" 
ExpiresByType image/png "access 1 year" 
ExpiresByType text/css "access 1 month" 
ExpiresByType application/pdf "access 1 month" 
ExpiresByType text/x-javascript "access 1 month" 
ExpiresByType application/x-shockwave-flash "access 1 month" 
ExpiresByType image/x-icon "access 1 year" 
ExpiresDefault "access plus 1 year" 
</IfModule> 
## EXPIRES CACHING ## 

<ifModule mod_headers.c> 
    <filesMatch "\\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$"> 
    Header set Cache-Control "max-age=2592000, public" 
    </filesMatch> 

    <filesMatch "\\.(css)$"> 
    Header set Cache-Control "max-age=2592000, public" 
    </filesMatch> 

    <filesMatch "\\.(js)$"> 
    Header set Cache-Control "max-age=216000, private" 
    </filesMatch> 

    <filesMatch "\\.(xml|txt)$"> 
    Header set Cache-Control "max-age=216000, public, must-revalidate" 
    </filesMatch> 

    <filesMatch "\\.(html|htm|php)$"> 
    Header set Cache-Control "max-age=1, private, must-revalidate" 
    </filesMatch> 
</ifModule> 

recomiendo personalizar los valores max-age para su sitio y sus archivos usted mismo.

Cuestiones relacionadas