1000 FAQ, 500 tutoriales y vídeos explicativos. ¡Aquí sólo hay soluciones!
Usar encabezados para optimizar el almacenamiento en caché de recursos
Esta guía explica cómo optimizar el almacenamiento en caché de recursos web mediante encabezados HTTP. Una buena estrategia de caché puede mejorar significativamente el rendimiento de su sitio web evitando la retransmisión innecesaria de archivos sin cambios.
Introducción
- El almacenamiento en caché web se basa en dos mecanismos complementarios:
- Duración de validez de la caché (mediante el encabezado Expires) que indica cuánto tiempo se puede reutilizar un recurso sin contactar con el servidor.
- Validación condicional (mediante los encabezados Last-Modified/If-Modified-Since) que permite verificar si un recurso ha cambiado antes de descargarlo nuevamente.
Configuración de la duración de caché con Expires
El encabezado Expires
permite especificar un período durante el cual el navegador puede reutilizar recursos directamente desde su caché local. Así es cómo configurarlo en su archivo .htaccess
:
- Cree o abra el archivo
.htaccess
en la raíz de su sitio (típicamente en/web
o/sites/domain.xyz
). Agregue la configuración del módulo
expires
:<IfModule mod_expires.c>
Defina duraciones de caché apropiadas para cada tipo de recurso:
ExpiresActive On ExpiresByType text/html "access plus 1 week" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType text/css "access plus 1 month" ExpiresByType application/javascript "access plus 1 month"
Estas directivas significan que:
- Las páginas HTML se mantendrán en caché durante una semana.
- Las imágenes JPEG, archivos CSS y JavaScript se mantendrán durante un mes.
Ajuste estas duraciones según la frecuencia de actualización de sus recursos.
Cierre la sección de configuración:
</IfModule>
Validación condicional con Last-Modified
Incluso cuando un recurso ha expirado en la caché, no siempre es necesario descargarlo completamente de nuevo. El mecanismo de validación condicional permite al navegador verificar si su versión en caché aún está actualizada. Este proceso funciona así:
- El servidor envía automáticamente un encabezado
Last-Modified
con cada recurso, indicando su fecha de última modificación.- Apache maneja esto de forma nativa para archivos estáticos - no se necesita configuración adicional.
Cuando el navegador solicita nuevamente el recurso, envía un encabezado
If-Modified-Since
que contiene la fecha que tiene en caché:GET /resource HTTP/1.1 Host: www.example.com If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT
- El servidor compara esta fecha con la fecha real de modificación del archivo:
- Si el archivo no ha cambiado, simplemente devuelve un código
304 Not Modified
, ahorrando así ancho de banda. - Si el archivo ha sido modificado, devuelve la nueva versión con un código
200 OK
.
- Si el archivo no ha cambiado, simplemente devuelve un código