performance - test - wordpress htaccess cache control
.htaccess: cómo "Especificar un validador de caché"? (3)
Estoy ejecutando Google PageSpeed en mi sitio y me dice que necesito
"Especifique un validador de caché".
A los siguientes recursos le falta un validador de caché. Los recursos que no especifican un validador de caché no se pueden actualizar de manera eficiente. Especifique un encabezado Last-Modified o ETag para habilitar la validación del caché para los siguientes recursos:
... luego enumera imágenes, CSS, JS, etc.
De acuerdo con http://code.google.com/speed/page-speed/docs/caching.html#LeverageBrowserCaching :
Establezca 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 lo 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?
Creo que el problema que tienes es con Expire:
y no con Last-Modified:
Apache enviaba por defecto el archivo Last-Modified:
header basado en la fecha del archivo. Sugiero eliminar el código superior y reemplazarlo por lo siguiente:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 year"
</IfModule>
Pruebe con eso, si no funcionó intente agregar 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>
Para "establecer un validador de caché", debe enviar lo siguiente en sus encabezados:
Expires
o Cache-Control: max-age
Y
Last-Modified
o ETag
Entonces, por ejemplo, en PHP puede agregar lo siguiente para 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á la calculadora de velocidad de páginas de Google.
Probé todos los códigos anteriores, pero no veo ningún cambio en el rango de gtmetrix. Usando este rango mejorado de control de caché (especificar un validador de caché) 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>
Te recomiendo personalizar los valores de max-age para tu sitio y sus archivos.