Apache mod_deflate · 4 min read · Sep 25, 2025

Cómo Ahorrar Tráfico Con mod_deflate de Apache2

En este tutorial, describiré cómo instalar y configurar mod_deflate en un servidor web Apache2. mod_deflate permite a Apache2 comprimir archivos y entregarlos a los clientes (por ejemplo, navegadores) que pueden manejar contenido comprimido, lo que la mayoría de los navegadores modernos pueden hacer. Con mod_deflate, puedes comprimir archivos HTML, de texto o XML a aproximadamente el 20 - 30% de sus tamaños originales, ahorrando así tráfico en el servidor y haciendo más felices a tus usuarios con módem.

La compresión de archivos causa una carga ligeramente mayor en el servidor, pero en mi experiencia, esto se compensa con el hecho de que los tiempos de conexión de los clientes a tu servidor disminuyen mucho. Por ejemplo, un usuario de módem que necesitaba siete segundos para descargar un archivo HTML sin comprimir ahora podría necesitar solo dos segundos para el mismo archivo, pero comprimido.

Al usar mod_deflate, no tienes que temer que excluyas a usuarios con navegadores más antiguos que no pueden manejar contenido comprimido. El navegador negocia con el servidor antes de que se transfiera cualquier archivo, y si el navegador no puede manejar contenido comprimido, el servidor entrega los archivos sin comprimir.

mod_deflate ha reemplazado a mod_gzip de Apache 1.3 en Apache2. Si deseas servir archivos comprimidos con Apache 1.3, echa un vistazo a este tutorial: mod_gzip - sirviendo contenido comprimido por el servidor web Apache.

Quiero decir primero que esta no es la única forma de configurar un sistema así. Hay muchas maneras de lograr este objetivo, pero esta es la forma que elijo. ¡No doy ninguna garantía de que esto funcione para ti!

1 Habilitar mod_deflate

Si tienes Apache2 instalado, mod_deflate también debería estar ya instalado en tu sistema. Ahora tenemos que habilitarlo. En Debian, podemos hacerlo así:

a2enmod deflate

Luego reinicia Apache2:

service apache2 restart

En otras distribuciones, es posible que debas editar la configuración de Apache2 manualmente para habilitar mod_deflate. Es posible que debas agregar una línea como esta a la sección LoadModule:

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

Asegúrate de ajustar la ruta a mod_deflate.so y reinicia Apache2 después.

2 Configurar mod_deflate

La compresión de archivos se puede configurar de una de dos maneras: ya sea exclusión explícita de archivos por extensión o inclusión explícita de archivos por tipo MIME. Puedes habilitar mod_deflate para todo tu servidor Apache2 o solo para sitios virtuales específicos. Dependiendo de esto, abre ahora la sección de configuración del servidor global de tu Apache2 o solo la sección de configuración de vhost donde deseas habilitar mod_deflate.

2.1 Inclusión Explícita De Archivos Por Tipo MIME

Si deseas comprimir solo archivos HTML, de texto y XML, agrega esta línea a tu configuración:

AddOutputFilterByType DEFLATE text/html text/plain text/xml

Esta es la configuración que estoy usando porque no quiero comprimir imágenes o archivos PDF o archivos que ya están comprimidos, como archivos zip.

2.2 Exclusión Explícita De Archivos Por Extensión

Si deseas comprimir todos los tipos de archivos y excluir solo unos pocos, agregarías algo como esto a tu configuración (en lugar de la línea de la sección 2.1):

SetOutputFilter DEFLATE  
SetEnvIfNoCase Request_URI \\.(?:gif|jpe?g|png)$ \\  
    no-gzip dont-vary  
SetEnvIfNoCase Request_URI \\  
    \\.(?:exe|t?gz|zip|bz2|sit|rar)$ \\  
    no-gzip dont-vary  
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary

Esto comprimiría todos los archivos excepto imágenes (gif, jpg y png), archivos que ya están comprimidos (como zip y tar.gz) y archivos PDF, lo cual tiene sentido porque no se gana mucho al comprimir estos tipos de archivos.

2.3 Otras Directivas de Configuración

Independientemente de si usas la configuración de la sección 2.1 o 2.2, deberías agregar estas líneas a tu configuración:

BrowserMatch ^Mozilla/4 gzip-only-text/html  
BrowserMatch ^Mozilla/4\.0[678] no-gzip  
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

Estas líneas son para algunos navegadores más antiguos que no soportan la compresión de archivos que no sean documentos HTML.

La configuración ya está terminada, y ahora debes reiniciar Apache2. En Debian, lo haces así:

service apache2 restart

Para aprender sobre más directivas de configuración, echa un vistazo al Módulo de Apache mod_deflate.

3 Pruebas

Para probar nuestra compresión, agregamos algunas directivas a nuestra configuración de mod_deflate que registran la relación de compresión de los archivos entregados. Abre tu configuración de mod_deflate y agrega las siguientes líneas:

DeflateFilterNote Input input_info  
DeflateFilterNote Output output_info  
DeflateFilterNote Ratio ratio_info  
LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate  
CustomLog /var/log/apache2/deflate_log deflate

Asegúrate de reemplazar /var/log/apache2 con el directorio de registros de tu Apache2. Esto podría ser /var/log/httpd, /var/log/httpd2, etc.

Luego reinicia Apache2. En Debian, hazlo así:

service apache2 restart

Ahora, cada vez que se solicite un archivo, esto se registrará en /var/log/apache2/deflate_log (o en el archivo que cambiaste). Una línea de registro típica se ve así:

"GET /info.php HTTP/1.1" 7621/45430 (16%)

Ves que se solicitó y entregó el archivo info.php. Su tamaño original era de 45430 bytes, y se comprimió a 7621 bytes o el 16% de su tamaño original. ¡Este es un gran resultado, y si tu sitio web consiste principalmente en archivos HTML, de texto y XML, mod_deflate te ahorrará mucho tráfico, y para los usuarios con una conexión de baja velocidad, tu sitio cargará mucho más rápido.

Si ya no necesitas el registro después de tus pruebas, puedes deshacer los cambios de la sección 3 y reiniciar Apache2.

4 Enlaces

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.