En este artículo vamos a ver cómo utilizar el método de compresión Brotli con servidores Apache. El método de compresión Brotli es una alternativa mejorada y más segura que los métodos gzip/deflate. La librería Brotli, creada por Google, comprime los archivos en el servidor antes de que éstos sean enviados al navegador del usuario.
Contenidos
Por qué utilizar Brotli en Apache
El algoritmo que usa Brotli es más eficiente a la hora de comprimir archivos que otros métodos de compresión. Brotli usa un diccionario de palabras, de modo que las comprime guardando únicamente sus referencias. Debido a esto, este método de compresión es más eficiente con archivos de texto como pueden ser archivos HTML, CSS o JS, siendo aquí en donde más se notan las mejoras. En general, puedes esperar que los archivos ocupen entre un 15% y un 25% menos.
Si quieres saber más cosas acerca de Brotli, puedes consultar este artículo. También puedes encontrar la librería de Brotli en GitHub. Dicho esto, vamos a ver cómo instar Brotli y cómo configurarlo con Apache.
Cómo instalar Brotli en Apache
Antes de comenzar la instalación, debes asegurarte de que tienes instalado el servidor Apache en tu sistema. También debes tener Git instalado en tu sistema. Si no sabes cómo instalar Git, consulta la guía de instalación de Git. Para instalar Brotli, sigue estos pasos:
- Lo primero que debes hacer es descargar e instalar Brotli en tu sistema. Puedes hacerlo con apt, con yum o clonando el repositorio con Git:
- Si vas a utilizar el gestor de paquetes apt (Fedora/CentOS), ejecuta este comando:
apt-get install brotli
- Si vas a utilizar el gestor de paquetes yum (Defora/RHEL/CentOS), ejecuta este comando:
yum install brotli
- Si prefieres clonar el repositorio de Git, usa estos comando:
yum install pcre-devel cmake -y cd /usr/local/src git clone https://github.com/google/brotli.git cd brotli
Seguidamente, haz un checkout de la última versión estable de Brotli. Puedes ver un listado de todas las versiones disponibles con el comando git branch:
git branch
En este ejemplo instalaremos la versión 1.0 de Brotli. Haz un checkout de esta versión:
git checkout v1.0
Ahora debes compilar la librería con el comando make:
./configure-cmake make && make install
- Si vas a utilizar el gestor de paquetes apt (Fedora/CentOS), ejecuta este comando:
- Una vez hayas instalado Brotli, tienes que descargarte y compilar el módulo para Apache. Lo primero que debes hacer es descargarte el módulo Apache-dev:
- Para Fedora/RHEL/CentOS, usa el comando yum:
yum install apache2-dev
- En Debian/Ubuntu, usa apt-get:
apt-get install apache2-dev
Con esto se instalarán varias utilidades que necesitarás para compilar el módulo.
- Para Fedora/RHEL/CentOS, usa el comando yum:
- Ahora debes clonar el módulo desde GitHub y compilarlo con estos comandos:
git clone --depth=1 --recursive https://github.com/kjdev/apache-mod-brotli.git cd apache-mod-brotli ./autogen.sh ./configure make
- El archivo .so estará en el interior del directorio .libs. Mueve el módulo al directorio de librerías de Apache con uno de los siguientes comandos. Si el directorio de módulos de Apache está en el directorio /usr/lib/apache2/modules/, usa este comando:
install -D .libs/mod_brotli.so /usr/lib/apache2/modules/mod_brotli.so -m 644
Si el directorio de módulos de Apache está en el directorio /usr/lib64/httpd/modules/, usa este comando:
install -D .libs/mod_brotli.so /usr/lib64/httpd/modules/mod_brotli.so -m 644
Si el directorio donde están los módulos está en otro directorio, consulta en dónde están y mueve el módulo a dicho directorio:
install -D .libs/mod_brotli.so /ruta/hasta/el/directorio/mod_brotli.so -m 644
- Ahora que has compilado y situado el módulo en donde corresponde, es hora de activarlo. En las versiones más recientes de Apache podrás utilizar la aplicación a2enmod para activar módulos y la aplicación a2dismod para desactivarlos. Sin embargo, debes crear primero un archivo .load que contenga la información del módulo:
cd /etc/apache2/mods-available echo "LoadModule brotli_module /usr/lib/apache2/modules/mod_brotli.so" > brotli.load
Con estos comandos, se habrá agregado el módulo a un archivo de nombre brotli.load.
- Lo siguiente que debes hacer es crear un archivo de configuración de Brotli. Dependiendo de la localización de Apache en tu sistema, tendrás que ejecutar crear el archivo brotli.conf en uno u otro directorio. Usaremos el editor nano, pero puedes usar cualquier otro editor como vim, por ejemplo. Si Apache está en el directorio /usr/local/apache, usa este comando:
nano /usr/local/apache/conf.d/brotli.conf
Si Apache está en el directorio /etc/httpd, usa este comando:
nano /etc/httpd/conf.d/brotli.conf
- En el interior del archivo, copia y pega el siguiente código:
<IfModule brotli_module> # Compresion ## BrotliCompressionLevel: 0-11 (default: 11) BrotliCompressionLevel 10 ## BrotliWindowSize: 10-24 (default: 22) BrotliWindowSize 22 # Logs BrotliFilterNote Input brotli_in BrotliFilterNote Output brotli_out BrotliFilterNote Ratio brotli_ratio #LogFormat '"%r" %{brotli_out}n/%{brotli_in}n (%{brotli_ratio}n)' brotli #CustomLog ${APACHE_LOG_DIR}/brotli_access.log brotli # Tipos de archivo AddOutputFilterByType BROTLI text/html text/plain text/css text/xml AddOutputFilterByType BROTLI text/css AddOutputFilterByType BROTLI application/x-javascript application/javascript AddOutputFilterByType BROTLI application/rss+xml AddOutputFilterByType BROTLI application/xml AddOutputFilterByType BROTLI application/json </IfModule>
- Podrás establecer el nivel de compresión de Brotli cambiando el valor de la opción BrotliCompressionLevel, con un valor que va de 1 a 11. Los desarrolladores del módulo recomiendan establecer un valor de entre 9 y 10. Puedes encontrar más información acerca de los rangos óptimo de compresión en este enlace. También podrás habilitar un log y, mediante las opciones AddOutputFilterByType, podrás seleccionar aquellos tipos de archivo que se comprimirán con Brotli.
Una vez instalado y configurado el módulo, todavía tienes que activarlo.
Cómo instalar Brotli en Apache
Para aplicar la configuración de Brotli en Apache, debes ejecutar el siguiente comando y reiniciar Apache:
a2enmod brotli
service apache2 restart
Puedes comprobar si Brotli está funcionando inspeccionando las cabeceras de las peticiones, asegurándote de que la cabecera de nombre Accept-encoding incluye el valor br. Las cabeceras de las respuestas también deberían incluir el valor br en el campo Content-encoding.
Esto ha sido todo.
Qué grande Edu. Gracias por compartir este «how-to» para Brotli. Así como extra, Plesk acaba de anunciar que integra por defecto este sistema de compresión desde la versión 18.0.33. =) ¡A los especialistas técnicos SEOs esta noticia les va a encantar!