Cómo activar compresión GZIP en un sitio web

La compresión GZIP reduce el tamaño de determinados recursos antes de enviarlos al navegador. Es especialmente útil para HTML, CSS, JavaScript, JSON, XML y otros formatos de texto, porque suelen contener patrones repetidos que pueden comprimirse de manera eficiente.

Antes de agregar reglas, comprobá si la compresión ya está activa. Muchos servidores, plugins de caché y CDN la habilitan automáticamente. Aplicar configuraciones duplicadas no comprime dos veces el contenido ni mejora el resultado y, en algunos casos, puede provocar errores.

Cómo funciona la compresión HTTP

El navegador informa los métodos que admite mediante el encabezado Accept-Encoding. El servidor o la CDN elige una opción compatible y, si comprime la respuesta, indica el método utilizado con Content-Encoding. Para GZIP, el valor habitual es gzip.

El navegador descomprime la respuesta automáticamente. El visitante ve la misma página, pero se transfieren menos datos. Esto puede reducir el tiempo de descarga, especialmente en conexiones lentas o recursos de texto grandes.

Primero comprobá si GZIP ya está activo

Podés abrir las herramientas para desarrolladores del navegador, ingresar en la pestaña de red, recargar la página y revisar los encabezados de un documento, CSS o JavaScript. Si la respuesta muestra Content-Encoding: gzip, la compresión ya está funcionando para ese recurso.

También puede aparecer br, que corresponde a Brotli, o zstd en plataformas compatibles. En ese caso no es necesario forzar GZIP para ese navegador: ya se está usando otra compresión negociada.

Activar GZIP en Apache mediante .htaccess

Si el servidor utiliza Apache, permite estas directivas y todavía no comprime el contenido, se puede probar una configuración como la siguiente en el archivo .htaccess del sitio:

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
AddOutputFilterByType DEFLATE text/javascript application/javascript application/json
AddOutputFilterByType DEFLATE application/xml application/rss+xml application/atom+xml
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>

La condición IfModule evita aplicar las instrucciones si el módulo no está disponible. Aun así, hacé una copia del archivo antes de editarlo. Si el sitio devuelve un error 500, restaurá inmediatamente la versión anterior.

Encontrarás una explicación más amplia sobre reglas relacionadas en caché del navegador y compresión mediante .htaccess.

No comprimir todos los formatos

JPEG, PNG, WebP, AVIF, MP3, MP4, PDF y ZIP ya utilizan compresión o estructuras que no suelen beneficiarse de una nueva pasada con GZIP. Intentarlo aumenta el consumo de CPU y puede incluso producir una respuesta ligeramente más grande.

Por eso se seleccionan tipos MIME de texto en lugar de aplicar compresión indiscriminadamente. SVG es una excepción frecuente: aunque es una imagen, internamente utiliza XML y puede reducirse de forma considerable.

GZIP no reemplaza la optimización de imágenes

La compresión HTTP ayuda con textos, pero no corrige imágenes sobredimensionadas. Para mejorar el peso de una página también hay que utilizar dimensiones apropiadas, formatos modernos y un nivel de calidad razonable. Tampoco reemplaza la minificación de CSS o JavaScript: son técnicas distintas y pueden complementarse.

Activación desde cPanel o un plugin

Algunos entornos de hosting ofrecen una herramienta en cPanel para optimizar contenido o administrar la compresión. Si está disponible, suele ser preferible utilizarla porque genera una configuración compatible con el servidor.

Los plugins de caché de WordPress también pueden habilitar compresión o agregar reglas al .htaccess. Revisá primero sus opciones y el contenido actual del archivo para no repetir bloques. Al cambiar de plugin, comprobá que no hayan quedado reglas antiguas.

GZIP cuando se utiliza NGINX

NGINX puede aplicar compresión desde su configuración global, pero en hosting compartido esa parte pertenece al administrador. Las reglas de Apache no necesariamente controlan lo que NGINX entrega al visitante cuando funciona como proxy.

Si el sitio está detrás de NGINX y no podés confirmar la compresión, consultá al soporte antes de agregar configuraciones improvisadas. También podés revisar cómo funciona NGINX como servidor web y proxy.

GZIP y Cloudflare

Cloudflare puede negociar la compresión en el borde de su red y entregar GZIP, Brotli u otro método compatible según el navegador y la configuración. Cuando esa capa administra la respuesta pública, las cabeceras vistas por el visitante pueden diferir de las que entrega directamente el servidor de origen.

En ese escenario, evitá agregar reglas solamente porque una prueba al origen muestra otro resultado. Comprobá la URL pública y entendé qué capa está respondiendo. La guía para activar Cloudflare en un dominio explica cómo incorporar esa plataforma.

Diferencias entre GZIP y Brotli

Brotli puede lograr archivos más pequeños en ciertos contenidos web, mientras que GZIP mantiene una compatibilidad muy amplia. No es necesario elegir uno de manera absoluta: el servidor o la CDN puede ofrecer Brotli a clientes compatibles y utilizar GZIP como alternativa.

Consultá la comparación completa de Brotli frente a GZIP para conocer sus ventajas y límites.

Qué revisar después de activar la compresión

  1. Comprobá que el sitio y el administrador carguen sin errores.
  2. Revisá Content-Encoding en varios recursos de texto.
  3. Compará el tamaño transferido, no solamente el tamaño original.
  4. Probá desde una ventana privada para evitar resultados de la caché local.
  5. Verificá páginas dinámicas, formularios y el proceso de compra si existe.

Problemas frecuentes

Un error 500 después de editar .htaccess suele indicar una directiva no permitida, un módulo ausente o un problema de sintaxis. Si el encabezado no aparece, también puede deberse al tipo MIME, a una respuesta demasiado pequeña, a una exclusión o a que otra capa modificó el contenido.

La compresión es una mejora útil, pero debe activarse una sola vez en la capa adecuada y verificarse con respuestas reales. Si el servidor o la CDN ya la administra, no hace falta duplicar la configuración.