Respuestas:
html5boilerplate.com incluye un archivo .htaccess bien comentado que tiene muchas configuraciones estándar que debes considerar. Entre ellos se encuentran configuraciones razonables para expirar el contenido (Caduca, E-tags, ...).
Aquí está la documentación sobre mod_expires .
Tenga en cuenta que los Last-Modified
encabezados son encabezados de caché débiles. La preferencia actual es usar Cache-Control
encabezados.
Google tiene un buen artículo sobre esto.
Optimizar el almacenamiento en caché
Caduca y Control de caché: max-age. Estos especifican la "duración de actualización" de un recurso, es decir, el período de tiempo durante el cual el navegador puede usar el recurso en caché sin verificar si hay una nueva versión disponible del servidor web. Son "encabezados de almacenamiento en caché fuertes" que se aplican incondicionalmente; es decir, una vez que se configuran y se descarga el recurso, el navegador no emitirá ninguna solicitud GET para el recurso hasta la fecha de caducidad o la edad máxima alcanzada.
Última modificación y ETag. Estos especifican algunas características sobre el recurso que el navegador comprueba para determinar si los archivos son los mismos. En el encabezado Última modificación, esta siempre es una fecha. En el encabezado ETag, este puede ser cualquier valor que identifique de forma exclusiva un recurso (las versiones de archivo o los hashes de contenido son típicos). Last-Modified es un encabezado de almacenamiento en caché "débil" en el sentido de que el navegador aplica una heurística para determinar si se obtiene o no el elemento del caché. (Las heurísticas son diferentes entre los diferentes navegadores). Sin embargo, estos encabezados permiten al navegador actualizar eficientemente sus recursos en caché mediante la emisión de solicitudes GET condicionales cuando el usuario vuelve a cargar la página explícitamente. Los GET condicionales no devuelven la respuesta completa a menos que el recurso haya cambiado en el servidor y, por lo tanto, tengan una latencia más baja que los GET completos.
Recomiendo usar uno Cache-Control
o más Expires
encabezados según sea necesario ya que son encabezados de caché fuertes. Algunos sistemas ignorarán las fechas de Última modificación.
Luego puede usar una herramienta como curl
o http://redbot.org para verificar los encabezados.
Last-Modified
encabezados en ausencia de otras instrucciones de almacenamiento en caché deja el período de caché hasta el cliente HTTP. Si un recurso no se ha modificado desde la Last-Modified
fecha, el recurso debe considerarse nuevo. En contraste, cuando se usa un encabezado Expires
o Cache-Control
el origen puede establecer un período de actualización explícito.
Expires
es un encabezado totalmente inapropiado para recursos que no caducan. Algunos recursos pueden modificarse, pero no en una fecha de vencimiento. El punto de Google es queLast-Modified
requiere un GET condicional, mientras queExpires
permite que el caché del navegador omita el GET por completo.