Introducción
El módulo mod_expires en Apache se utiliza para controlar la configuración del encabezado HTTP Expires y la directiva de edad máxima del encabezado HTTP Cache-Control en las respuestas del servidor. Estos encabezados determinan durante cuánto tiempo un cliente (navegador o proxy) almacenará en caché los recursos. La optimización de estas configuraciones puede reducir significativamente la carga del servidor y mejorar la experiencia del lado del cliente al reducir los tiempos de carga.
Configuración optimizada de mod_expires
Aquí hay una sección mod_expires optimizada para un servidor de producción, que cubre una variedad de tipos de archivos:
## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
# Default expiration: 1 hour after request
ExpiresDefault "now plus 1 hour"
# HTML components
ExpiresByType text/html "access plus 0 seconds"
# Data interchange
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType application/rss+xml "access plus 1 hour"
ExpiresByType application/atom+xml "access plus 1 hour"
# Favicon (can be cached for a long time)
ExpiresByType image/x-icon "access plus 1 year"
# Media: images, video, audio
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/webp "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
# CSS and JavaScript
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType application/x-javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
# Webfonts
ExpiresByType font/otf "access plus 1 month"
ExpiresByType font/ttf "access plus 1 month"
ExpiresByType font/woff "access plus 1 month"
ExpiresByType font/woff2 "access plus 1 month"
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/font-woff2 "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
# Other
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType image/vnd.microsoft.icon "access plus 1 year"
</IfModule>
Explicación de la configuración.
- ExpiresDefault: este es el tiempo de almacenamiento en caché predeterminado para recursos que no coinciden con otras reglas. Está configurado en 1 hora, pero puedes cambiarlo según la frecuencia con la que cambia el contenido.
- HTML e intercambio de datos: estos tipos de contenido suelen cambiar con frecuencia y están destinados a caducar inmediatamente (0 segundos) o después de un período corto (1 hora para los feeds).
- Favicon: rara vez cambian y se pueden almacenar en caché durante un período más largo (1 año).
- Archivos multimedia: las imágenes, los vídeos y el audio no suelen actualizarse con frecuencia. Se espera que el vencimiento sea de 1 mes, pero es posible aumentarlo si estos recursos cambian raramente.
- CSS y JavaScript: debido a que estos archivos pueden cambiar con las actualizaciones del sitio web, pero no con tanta frecuencia como el contenido HTML, están configurados para un período de caché más largo (1 año). Garantice el control de versiones de estos archivos para evitar problemas de almacenamiento en caché cuando se actualicen.
- Fuentes web: las fuentes generalmente no cambian una vez configuradas, por lo que es apropiado un período de almacenamiento en caché más largo (1 mes).
- Otros tipos: para recursos como archivos PDF y tipos de imágenes específicos, ajuste el tiempo de almacenamiento en caché según la frecuencia con la que se actualizan estos recursos.
Notas adicionales
- Cambie estas configuraciones según su frecuencia de actualización de contenido específica.
- Asegúrese de tener una estrategia de control de versiones para recursos como CSS y JavaScript para evitar problemas de almacenamiento en caché cuando se actualicen estos archivos.
- Tenga en cuenta que el almacenamiento en caché agresivo puede causar problemas cuando el contenido se actualiza en el servidor pero aún está almacenado en caché en el navegador del cliente.
- Supervise y adapte periódicamente estas configuraciones en función de las necesidades específicas y los comentarios de su entorno de producción.