Optimización de Caché en Apache2

En este tutorial, se explorará cómo optimizar el rendimiento de un servidor Apache2 implementando técnicas avanzadas de caché. Se detallará el uso estratégico de los módulos mod_deflate, mod_headers y mod_expires para mejorar la entrega de contenido estático. A través de una configuración cuidadosa y la combinación de estos módulos, se demostrará cómo se puede aumentar la eficiencia y la velocidad de respuesta del servidor, proporcionando así una experiencia de usuario más rápida y fluida. Este enfoque no solo mejora la experiencia del usuario final, sino que también contribuye a la reducción del ancho de banda y la carga del servidor, elementos cruciales para el mantenimiento de sitios web ágiles y eficientes en la era digital.

Función de cada módulo

mod_deflate

Este módulo permite que el servidor comprima el contenido antes de enviarlo al cliente, lo cual puede mejorar significativamente el tiempo de carga de las páginas y reducir el uso del ancho de banda.

mod_headers

Se utiliza para añadir o modificar las cabeceras HTTP que se envían junto con los recursos web, lo que es útil para controlar las cabeceras de caché, entre otras funciones.

mod_expires

Permite al servidor configurar el encabezado Expires HTTP y el encabezado Cache-Control: max-age, lo que ayuda a definir cuánto tiempo los navegadores deben guardar en caché los recursos estáticos.

Combinación de módulos deflate, headers y expires 

Es posible y generalmente recomendable combinar estos módulos. mod_deflate puede reducir el tamaño de los archivos estáticos, mientras que mod_headers y mod_expires pueden ser utilizados juntos para controlar cómo se almacenan en caché estos archivos en el navegador del cliente.

Instalación y configuración

Instalación de módulos:

  1. Para mod_deflate y mod_expires, se pueden habilitar con los comandos 
    • sudo a2enmod deflate
    • sudo a2enmod expires
  2. mod_headers suele venir habilitado por defecto en la mayoría de las instalaciones de Apache, pero si es necesario habilitarlo, se puede utilizar el comando:
    • sudo a2enmod headers
  3. Configuración de VirtualHost:
    • Se debe editar el archivo de configuración del VirtualHost, por ejemplo:
      • sudo nano /etc/apache2/sites-available/subdominio.conf
    • Se deben agregar las siguientes directivas para configurar los módulos:
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript
</IfModule>

<IfModule mod_headers.c>
    Header append Vary User-Agent
</IfModule>

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/gif "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/pdf "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 week"
    ExpiresByType application/x-javascript "access plus 1 week"
    ExpiresByType image/x-icon "access plus 1 week"
    ExpiresByType image/svg+xml "access plus 1 month"
    ExpiresByType application/font-woff "access plus 1 month"
    ExpiresByType application/x-font-ttf "access plus 1 month"
    ExpiresByType font/opentype "access plus 1 month"
    ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
</IfModule>
  • Después de guardar los cambios, se debe reiniciar Apache con:
    • sudo systemctl restart apache2.

Con estos pasos, se habrá configurado el servidor Apache para utilizar la compresión y el caché de contenido estático de manera efectiva.