Compresión GZIP y Brotli

Dificultad del post: facilmediadifícil
gzip brotli

Yo no era muy fan de las compresiones hasta que, hace un par de años, vi en una presentación usada en una ponencia por el director de UI de Netflix una cosa que me llamó bastante la atención y que explicaré en este post cuando hable de la compresión GZIP.

Vamos a empezar por el principio. Desde hace ya años, los servidores web y los navegadores web son compatibles con GZIP, un formato de compresión y descompresión rápida que permite que el servidor web comprima los archivos antes de enviarlos al navegador web del visitante y que posteriormente el navegador web del visitante pueda descomprimirlos. Todo esto de forma totalmente transparente para el usuario final.

gzip brotli

GZIP es un formato opensource y está basado en el algoritmo LZ77, es un formato de compresión sin perdida. Como es normal en este tipo de formatos de compresión, son mucho más eficaces en archivos de texto y eso es precisamente de lo que están formados la mayor parte de los sitios web: archivos HTML, archivos CSS, archivos JS, etc. Todos estos son archivos de base texto y, por lo tanto, la compresión puede hacer maravillas.

Para que te hagas una idea, esto es lo que me ahorro yo en mi sitio web (este blog) utilizando una mezcla de GZIP y Brotli:

gzip brotli

Como puedes ver, la compresión ronda el 82%. Es decir, vamos a ahorrar un 82% de ancho de banda al servir esta web.

Si quieres probar con tus propios sitios, puedes hacerlo con esta herramienta: https://www.giftofspeed.com/gzip-test/

Volviendo al tema, como ves, el ahorro de ancho de banda es una de las principales ventajas que obtendremos al implementar una compresión en nuestro servidor web. Además, hay algunas ventajas indirectas:

  • Se reducen los tiempos de descarga y, a causa de ello, mejoramos de forma casi inapreciable los tiempos de carga. Cuanto más grande y compleja sea la web, más se va a notar la compresión en los tiempos de carga.
  • Mejoramos la experiencia de usuario, ya que normalmente estos algoritmos de compresión son muy rápidos y el navegador del visitante casi ni lo nota. De todos modos, es importante combinar la compresión con el cache de navegador o browser cache para conseguir mejores resultados.

El tema de ahorrar ancho de banda puede parecer una tontería con las conexiones actuales, pero hay que tener en cuenta que los smartphones con conexiones móviles no siempre tienen buena cobertura y ahí es precisamente donde más se nota esto y también la implementación de HTTP/3 en el servidor web.

Otro factor importante en este tipo de formatos de compresión para web es que no solo afecta la ratio de compresión que sea capaz de conseguir el algoritmo, sino también la velocidad de compresión y descompresión. Este último factor será vital para que todo sea transparente para los visitantes y no se retrase la carga de la web.

Icono suscripción Newsletter

¿Quieres
recibir mis articulos?

No te pierdas todos mis trucos para WordPress, CMS, Marketing Digital y WPO.

RESPONSABLE:

RAIOLA NETWORKS, S.L.

C.I.F.: B27453489

Avda de Magoi, 66, Semisótano, Dcha., 27002 Lugo (Lugo)

Telefono: +34 982776081

e-mail: info@raiolanetworks.es

FINALIDAD:Atender solicitudes de información, ejecución de la contratación de servicios y remisión de comunicaciones comerciales.
LEGITIMACIÓN:Consentimiento del interesado y contratación de productos y/o servicios del Responsable
DESTINATARIOS:

No se ceden datos a terceros, salvo obligación legal.

Personas físicas o jurídicas directamente relacionadas con el Responsable

Encargados de Tratamiento adheridos al Privacy Shield

DERECHOS:Acceder, rectificar y suprimir los datos, portabilidad de los datos, limitación u oposición a su tratamiento, derecho a no ser objeto de decisiones automatizadas, así como a obtener información clara y transparente sobre el tratamiento de sus datos.
INFORMACIÓN ADICIONAL:Se puede consultar la política de privacidad de forma más detallada aquí.

 

Compresión GZIP y Deflate

Como he dicho, la compresión GZIP lleva muchos años entre nosotros y es bastante común. De hecho, la mayoría de plugins de cache para WordPress y la mayoría de módulos de cache de página para PrestaShop implementan automáticamente la compresión GZIP.

Existe una alternativa a GZIP, llamada Deflate, que tiene muchas similitudes a nivel interno con GZIP. Sin embargo, Deflate es un formato de compresión sin patentar y puede tener múltiples implementaciones diferentes. De hecho, GZIP utiliza Deflate para comprimir datos, aunque añade posteriormente un checksum de verificación y un encabezado de datos.

gzip brotli

A nivel práctico, normalmente en servidores de hosting se utiliza Deflate cuando GZIP no está disponible, ya que la activación se hace exactamente de la misma forma. Actualmente, todos los servidores de hosting deberían tener activo GZIP, ya que puede ser un poquito más estable que Deflate al llevar checksum.

 

Configurar o activar GZIP y Deflate

En caso de que no quieras implementar GZIP mediante plugin en WordPress o si utilizas otro CMS, puedes hacerlo también con este código en el .htaccess para Apache o LiteSpeed (servidor web optimizado que usamos en Raiola Networks).

Y si quieres activar Deflate también con el .htaccess, puedes utilizar el siguiente código:

Si GZIP está habilitado en el servidor web Apache o LiteSpeed, con este código en el .htaccess se activará. Deflate normalmente siempre está activo, por lo que puede servirte si GZIP no lo está.

En el caso de Nginx, debes realizar los ajustes necesarios en los archivos de configuración. En cambio, en VestaCP viene activado por defecto, así que si usas uno de los servidores VPS optimizados de Raiola Networks no tendrás que preocuparte.

En caso contrario, tienes que modificar estas opciones de configuración dentro del archivo nginx.conf.

Después puedes usar la herramienta que hemos mostrado anteriormente para probar si GZIP está funcionando correctamente en tu sitio web: https://www.giftofspeed.com/gzip-test/

En el navegador web no tienes que hacer nada, ya que todos los navegadores son compatibles con GZIP.

 

Configurar o activar GZIP en WordPress

Como he dicho antes, en WordPress podemos instalar un plugin de cache y ya tendremos GZIP activado, ya que la mayoría de plugins de este tipo (como WP Rocket o LiteSpeed Cache) realizan esta configuración.

gzip brotli

Si queremos utilizar un plugin de cache que no admita esto o si queremos usar un plugin para activar GZIP, existen varias opciones gratuitas para hacerlo:

Estos solo son tres ejemplos, pero existen mucho más plugins. Sin embargo, la mayoría se basan en el .htaccess, por lo que también puedes implementarlo así.

 

Compresión Brotli

Vamos a cambiar completamente de tema para pasar a hablar de Brotli, un nuevo formato de compresión que ha aparecido hace relativamente poco.

Brotli es un formato de compresión de datos opensource basado en el algoritmo LZ77, al igual que GZIP, pero con aspectos mejorados. En 2015 se lanzó Brotli para la compresión de fuentes web, pero ha ido evolucionando hasta lo que actualmente es: una buena alternativa a GZIP que se ha ido introduciendo poco a poco en navegadores y servidores web (aunque por el momento hay muchos servidores que aún no son compatibles).

gzip brotli

La diferencia entre GZIP y Brotli es que Brotli ya no utiliza Deflate. Eso mejora en un 20% la compresión en archivos de base texto como los HTML, CSS y JS, mientras que se mantienen unos tiempos de compresión y descompresión aceptables.

Si quieres ver la mejora de compresión que ofrece Brotli en relación a GZIP, esta herramienta puede ayudarte a hacer una estimación: https://tools.paulcalvano.com/compression.php

En el nivel más alto de compresión de Brotli, se mejora alrededor de un 20% la compresión del nivel más alto de GZIP, como dice la teoría.

Aunque en casos más extremos la mejora de compresión puede llegar al 30%, el problema viene en la descompresión, ya que puede ser lenta y podemos perder el tiempo ganado en la descarga.

Si quieres probar si tienes Brotli en tu web o si está funcionando, puedes utilizar esta herramienta de KeyCDN: https://tools.keycdn.com/brotli-test

 

Configurar o activar Brotli

Como he dicho antes, en el momento de publicar este artículo todavía es complicado encontrar servidores web que sean compatibles con Brotli. No obstante, los principales servicios CDN como KeyCDN o CloudFlare ya son compatibles con Brotli y LiteSpeed Web Server también. En la actualidad, Apache y Nginx requieren mod_brotli y muchos proveedores de hosting no lo implementan porque es una funcionalidad bastante nueva.

Por otro lado, aún hay algunas versiones antiguas de navegadores que no son compatibles con Brotli: https://caniuse.com/#search=brotli

Si el servidor web tiene Brotli activado y tenemos .htaccess (Apache y LiteSpeed), podemos utilizar este código en el .htaccess:

En Nginx, una vez más, debemos modificar el archivo de configuración nginx.conf como si fuera para GZIP:

Para probar si funciona correctamente Brotli, podemos utilizar la herramienta de KeyCDN: https://tools.keycdn.com/brotli-test

Como he dicho, en servicios CDN como CloudFlare también podemos activar Brotli, aunque tendremos que hacerlo directamente desde el panel de control.

 

Configurar o activar Brotli en WordPress

En WordPress, algunos plugins permiten activar Brotli. Sin embargo, todos están basados en la modificación del .htaccess, por lo que van a funcionar en todos los servidores web excepto en Nginx (que no utiliza el .htaccess).

Algunos plugins de cache, como W3 Total Cache, llevan una opción para activar la compresión Brotli.

gzip brotli

Desgraciadamente, no existen muchos plugins que permitan activar Brotli fácilmente, ya que por el momento es una tecnología que se está implementando poco a poco. Por esta razón, mi recomendación es que hagas la implementación mediante un tweak en el .htaccess de tu dominio.

Icono suscripción Newsletter

¿Quieres
recibir mis articulos?

No te pierdas todos mis trucos para WordPress, CMS, Marketing Digital y WPO.

RESPONSABLE:

RAIOLA NETWORKS, S.L.

C.I.F.: B27453489

Avda de Magoi, 66, Semisótano, Dcha., 27002 Lugo (Lugo)

Telefono: +34 982776081

e-mail: info@raiolanetworks.es

FINALIDAD:Atender solicitudes de información, ejecución de la contratación de servicios y remisión de comunicaciones comerciales.
LEGITIMACIÓN:Consentimiento del interesado y contratación de productos y/o servicios del Responsable
DESTINATARIOS:

No se ceden datos a terceros, salvo obligación legal.

Personas físicas o jurídicas directamente relacionadas con el Responsable

Encargados de Tratamiento adheridos al Privacy Shield

DERECHOS:Acceder, rectificar y suprimir los datos, portabilidad de los datos, limitación u oposición a su tratamiento, derecho a no ser objeto de decisiones automatizadas, así como a obtener información clara y transparente sobre el tratamiento de sus datos.
INFORMACIÓN ADICIONAL:Se puede consultar la política de privacidad de forma más detallada aquí.

Tal vez te interese...

Picture of Álvaro Fontela
Álvaro Fontela
Soy ponente en congresos de marketing digital, consultor WordPress, ademas de CEO y co-fundador de Raiola Networks, amante del mundo del motor (coches japoneses) y tecnófilo empedernido.
Picture of Álvaro Fontela
Álvaro Fontela
Soy ponente en congresos de marketing digital, consultor WordPress, ademas de CEO y co-fundador de Raiola Networks, amante del mundo del motor (coches japoneses) y tecnófilo empedernido.

14 Responses

    1. Hola Marcos, si, nuestros servidores de hosting cPanel de Raiola llevan LiteSpeed y por lo tanto son compatibles con Brotli.

  1. Entiendo que recomiendas totalmente la instalación de un plugin de cache que contemple el activar gzip e incluso brotli en lugar de hacerlo a mano (en código), verdad?

    O serias más de hacerlo a mano?

    Yo he activado una opción que tenéis en vuestro servidor en optimización que he leído en un tutorial vuestro que es compresión deflate. Con eso basta o sigues pensando que mejor instalar el plugin de cache con gzip? De hecho es que ahora mismo con mi web no activa y estando editándola (newspaper template) se han gastado 33 GB de ancho!!! No sé qué demonios ha pasado.. ¿Realmente editar la template puede hacer que se gaste eso? (No tenía ni el defalte ese activado). Entiendo que editar tb es gasto de bandwidth pero tantísimo? Ponle que haya abierto, cerrado la plantilla de la home unas 15-20 veces al día y la web (abriéndola con el host de Windows cambiado para poder acceder) un número similar de veces… Tus compañeros están estudiando el caso porque les he abierto un ticket al darme cuenta… Entenderás mi preocupacion porque editar la template es algo que sí o sí tengo que hacer.

    Muchas gracias

    1. Hola Raul, todos los plugins hacen el mismo proceso que harias tu manualmente, es decir, meter el snippet en el .htaccess, por lo que da igual como lo hagas.
      Alguno puede hacerlo por cabeceras, pero si el server no tiene el modulo activo, es indiferente. Por esa razón todos usan el .htaccess.

      En cuanto al ancho de banda, pueden ser bots, pero me parece muy raro, nunca he visto algo así. Si puedes pasame tu email de cliente por el formulario de contacto de este blog y lo miro.

  2. Hola Alvaro.
    ¿Entonces recomiendas GZIP o Brotli?
    Cuando accedo a la url que nos has dejado en el artículo en mi web que tengo en Raiola me pone brotli, pero en este blog GZIP.
    Cambié a brotli hace un tiempo, pero al ver que tu no la tienes en tu web me ha surgido la duda de si estoy haciendo bien. Me obsesiona la velocidad…. 🙂

    Gracias!!!!!

    1. Hola Marcos, ahora mismo este blog tiene GZIP porque tengo CloudFlare desactivado por un tema de mantenimiento y como voy liado, llevo 2 semanas con el desactivado.

      En los servidores LiteSpeed de Raiola utilizamos ya Brotli (activable), pero yo en este servidor el Brotli lo tengo mediante CloudFlare, ya que uso Nginx por temas de “logística”, vamos a llamarle así.

      Yo recomiendo Brotli siempre que se pueda usar, aunque ya te adelanto que la velocidad no será perceptible al ojo humano ni con GZIP ni con Brotli.

  3. Genial. Muchas gracias por la aclaración, es un placer poder realizar pequeñas consultas a través de este blog a un experto de tu calibre.

    1. Realmente no, porque quien realmente esta sirviendo el contenido comprimido es CloudFlare y lo hará con Brotli.

      Hace años, al combinar Apache con Nginx como proxy inverso, si que habia problemas con el doble GZIP, pero CloudFlare ya esta preparado para esto.

  4. Hola Álvaro,

    Me surge una duda. He pasado los tests tanto de comprobar si tengo gzip activado como si tengo brotli activado y ambos me dan positivo, por lo que no entiendo muy bien cuál de las dos se está aplicando realmente en mi web.

    He preguntado en el hosting y me han dicho que ellos utilizan brotli pero luego si compruebo las cabeceras correspondientes en el front me sale gzip pero si lanzo un curl -I para ver las cabeceras, no me aparece ninguna relacionada con la compresión gzip.

    La verdad es que tengo un mar de dudas. ¿Hay alguna forma de comprobar al 100% que la compresión se está realizando y cuál de ellas se está realizando?

    Muchas gracias!! La verdad que el artículo ha sido muy ameno de leer.

    1. Hola Raul, la forma idónea de comprobarlo es en las cabeceras, pero vamos, que un CURL tampoco debería mentir.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Artículos destacados

Optimizar la carga de JavaScript y CSS en WordPress

WebP en WordPress

Optimizar la carga de Google Fonts en WordPress

Server Timing – Analizar peticiones HTTPS y HTTP (WPO)

WP Rocket para acelerar WordPress con cache de página

Limpiar la base de datos de WordPress

Artículos más comentados

WP Rocket para acelerar WordPress con cache de página

Optimizar la carga de JavaScript y CSS en WordPress

WebP en WordPress

Optimizar la carga de Google Fonts en WordPress

CloudFlare CDN para optimizar tu web o blog

Cache en WordPress – Plugins y tipos de cache