htaccess evitar equiv control cache php apache http caching

php - evitar - Auditoría de Google Chrome en el almacenamiento en caché



http-equiv="cache-control" (3)

La expiración de 3 horas podría no ser suficiente "tiempo" para las cosas de velocidad lenta y de página, y es posible que se quejen. He visto esto con contenido estático en mis sitios con vencimiento de 4 horas y yslow (no lo he intentado con las cosas de Google).

La mayoría de ellos quiere contenido estático versionado con tiempos de caducidad LARGOS (como 1 año); ver aquí

Si ejecuto una auditoría en mis sitios con Google Chrome, aparece este mensaje en la sección de almacenamiento en caché del navegador Leverage :

A los siguientes recursos le falta una caducidad de caché. Los navegadores pueden no almacenar en caché los recursos que no especifiquen una caducidad:

Una lista de todas las imágenes sigue. Recibo un aviso similar en el caché de proxy de apalancamiento :

Considere agregar un encabezado "Cache-Control: public" a los siguientes recursos:

Además de las imágenes, también recibo un aviso sobre los archivos HTML, CSS y JavaScript:

Los siguientes recursos son explícitamente no cacheables. Considere hacerlos cacheables si es posible:

Es gracioso porque he trabajado duro para almacenar en caché todos los contenidos estáticos (excepto las imágenes, donde acabo de dejar la configuración predeterminada de Apache). Firefox sí almacena todos estos elementos en caché.

¿Hay algo que debería mejorar en mis encabezados HTTP?

Aquí está el conjunto de encabezado completo de algunos elementos que se cargaron después de eliminar el caché del navegador. Las imágenes usan configuraciones predeterminadas que realmente no revisé antes, el resto debe almacenarse en caché durante tres horas. Puedo establecer encabezados con ambos .htaccess y PHP .

PNG

HTTP/1.1 200 OK Date: Sat, 31 Jul 2010 12:46:14 GMT Server: Apache Last-Modified: Thu, 18 Mar 2010 21:40:54 GMT Etag: "c48024-230-4821a15d6c580" Accept-Ranges: bytes Content-Length: 560 Keep-Alive: timeout=4 Connection: Keep-Alive Content-Type: image/png

HTML

HTTP/1.1 200 OK Date: Sat, 31 Jul 2010 12:46:13 GMT Server: Apache X-Powered-By: PHP/5.2.11 Expires: Sat, 31 Jul 2010 15:46:13 GMT Cache-Control: max-age=10800, s-maxage=10800, must-revalidate, proxy-revalidate Content-Encoding: gzip Vary: Accept-Encoding Last-Modified: Wed, 24 Mar 2010 20:30:36 GMT Keep-Alive: timeout=4 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=ISO-8859-15

CSS

HTTP/1.1 200 OK Date: Sat, 31 Jul 2010 12:48:21 GMT Server: Apache X-Powered-By: PHP/5.2.11 Expires: Sat, 31 Jul 2010 15:48:21 GMT Cache-Control: max-age=10800, s-maxage=10800, must-revalidate, proxy-revalidate Content-Encoding: gzip Vary: Accept-Encoding Last-Modified: Thu, 18 Mar 2010 21:40:12 GMT Keep-Alive: timeout=4 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/css

JavaScript

HTTP/1.1 200 OK Date: Sat, 31 Jul 2010 12:48:21 GMT Server: Apache X-Powered-By: PHP/5.2.11 Expires: Sat, 31 Jul 2010 15:48:21 GMT Cache-Control: max-age=10800, s-maxage=10800, must-revalidate, proxy-revalidate Content-Encoding: gzip Vary: Accept-Encoding Last-Modified: Thu, 18 Mar 2010 21:40:12 GMT Keep-Alive: timeout=4 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: application/x-javascript

Actualizar

Probé la sugerencia de Jumby y configuré el vencimiento de mi CSS a 1 año:

Cache-Control:max-age=31536000, s-maxage=31536000, must-revalidate, proxy-revalidate Connection:Keep-Alive Content-Encoding:gzip Content-Length:4198 Content-Type:text/css Date:Mon, 02 Aug 2010 20:48:56 GMT Expires:Tue, 02 Aug 2011 20:48:56 GMT Keep-Alive:timeout=5, max=99 Last-Modified:Thu, 18 Mar 2010 20:40:12 GMT Server:Apache/2.2.14 (Win32) PHP/5.3.1 Vary:Accept-Encoding X-Powered-By:PHP/5.3.1

Sin embargo, Chrome aún afirma " explícitamente no cacheable ".


El problema es la parte "debe revalidar" de su directiva de control de caché. Deshazte de eso, y deberías ser bueno para ir.


Acabo de recibir un problema similar, descubrí que la misma configuración y el código producen una advertencia de auditoría de Chrome cuando pruebo en mi servidor de prueba en 127.0.0.1, pero no en el servidor real con un nombre DNS real.