Icono del sitio Blog personal de Guido Cutipa

Optimización de Caché en Apache2

HTTP/2

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>

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

Salir de la versión móvil