¿Qué es gzip y cómo se utiliza esta herramienta?
La herramienta de compresión de datos gzip se puede utilizar en distintas plataformas y es especialmente útil en el ámbito del desarrollo web y en proyectos online como solución de compresión. Gzip se activa y maneja fácilmente desde la herramienta de línea de comandos correspondiente, lo que permite ahorrar espacio de almacenamiento y mejorar el rendimiento del sistema.
¿Cómo funciona gzip?
gzip, abreviatura de “GNU zip”, se basa en el algoritmo deflación, de uso libre, que combina el método de compresión de archivos LZ77 (Lempel-Ziv 77) con la codificación Huffman. Con ayuda de ambas técnicas, gzip escanea archivos en busca de cadenas de caracteres dobles. Si el programa encuentra este tipo de secuencias repetitivas, las reemplaza por una referencia a la primera cadena. La longitud de estas secuencias suele estar limitada a 32 000 bytes. Por tanto, si una cadena de caracteres no aparece en los 32 000 bytes anteriores, será almacenada sin comprimirse en el archivo gzip, cuya terminación es .gz.
Este método se aplica únicamente a archivos individuales, por lo que es necesario utilizar además el programa de empaquetado tar para crear los llamados archivos Tarball con las extensiones .tar.gz o .tgz.
De forma predeterminada, el archivo de origen desaparece normalmente tras la compresión con gzip (cuando se aplica directamente sobre un archivo). Sin embargo, puedes desactivar esta función de manera automática con el parámetro opcional (-k
). Para volver a descomprimir paquetes comprimidos, se puede recurrir o bien a la aplicación gunzip o al comando gzip correspondiente.
gzip: sintaxis y comandos principales
Aunque existen interfaces gráficas para las distintas plataformas, manejar gzip desde la terminal o línea de comandos es perfectamente posible y muy sencillo. Incluso para quienes están empezando, no representa un gran reto, ya que gzip está optimizado como una herramienta clásica de línea de comandos. Su sintaxis general es la siguiente:
gzip opción archivo(s)
bashNo es obligatorio especificar ninguna opción. Si el campo permanece vacío, gzip recurre a la configuración predeterminada. Por ejemplo, este comando básico crea una versión comprimida del archivo de texto ejemplo.txt
:
gzip ejemplo.txt
bashNo obstante, si deseas descomprimir archivos o indicar parámetros específicos como el nivel de compresión, el directorio de destino o qué hacer con el archivo original, necesitarás incluir las opciones adecuadas. En la siguiente tabla encontrarás un resumen de los comandos más importantes de gzip:
Opción | Descripción |
---|---|
-1 … -9
|
Define el nivel de compresión (1–9), donde 1 es el más rápido, pero menos eficiente, y 9 es el más eficiente pero más lento. El valor por defecto es 5
|
-r
|
Busca recursivamente en el directorio (incluidos los subdirectorios) y comprime o descomprime todos los archivos contenidos |
-f
|
Fuerza la compresión con gzip y sobrescribe archivos existentes con el mismo nombre si es necesario |
-d
|
Descomprime el archivo seleccionado en el directorio actual |
-k
|
Evita que se elimine el archivo original |
-l
|
Muestra información como la tasa de compresión del archivo comprimido |
-c
|
Muestra el archivo comprimido en la salida estándar (habitualmente, la pantalla vinculada a la terminal) |
-q
|
Desactiva todos los mensajes de gzip |
-t
|
Verifica la integridad del archivo comprimido |
-h
|
Muestra todas las opciones disponibles |
¿En qué ámbitos puede usarse la herramienta de compresión gzip?
Hoy en día, gzip es compatible con prácticamente todas las plataformas y puede ampliarse libremente, siempre que se respete la licencia GPL elegida para el proyecto. En sistemas Linux, esta herramienta de compresión suele venir preinstalada o estar disponible en el gestor de paquetes. Además, en la página oficial de gzip también se pueden encontrar versiones para macOS y Windows, por lo que puedes usarla en estos sistemas en cualquier momento para ahorrar espacio de almacenamiento.
Otro campo de aplicación muy importante es el entorno web: servidores como Apache admiten la compresión gzip desde hace años, y los navegadores modernos pueden interpretar los archivos comprimidos y descomprimirlos durante el renderizado de la página web. En este contexto, gzip demuestra todo su potencial: si se activa esta funcionalidad, el servidor web comprime automáticamente tanto los elementos cargados en el espacio web como los elementos generados dinámicamente. De este modo, se puede reducir significativamente el tiempo de carga de una página como parte de una estrategia básica de optimización web. La descompresión se realiza en segundo plano en el navegador, sin necesidad de consumir ancho de banda adicional. Esta mejora de rendimiento beneficia especialmente a los usuarios de dispositivos móviles y, de forma indirecta, también mejora el posicionamiento en buscadores.
¿Cómo se puede utilizar la compresión con gzip en Apache?
Los servidores web suelen ofrecer el método de compresión gzip en forma de un módulo que simplemente debes activar. Hoy en día, muchos proveedores de hosting activan esta función por defecto, aunque la situación era algo distinta en el pasado. Si no estás seguro de si tu proveedor permite el uso de la compresión gzip, puedes consultarlo directamente o realizar una comprobación manual.
En un servidor web Apache, se puede comprobar la configuración del módulo, por ejemplo, con la ayuda de una sencilla función phpinfo()
. La entrada HTTP_ACCEPT_ENCODING
revela cuáles son los métodos de compresión o si se ha seleccionado alguno.
Si gzip está disponible, dispones de tres opciones distintas para utilizar esta herramienta de compresión según tus necesidades.
Opción 1: activar la compresión gzip desde el archivo .htaccess
Mediante un archivo .htaccess, puedes aplicar configuraciones específicas por directorio y así ajustar tu servidor web en tiempo real. Esto se consigue gracias a que un archivo de configuración, que se encuentra normalmente en el directorio raíz y que llega al servidor con cada petición, puede leerse de forma automática. En el caso de algunos proveedores de alojamiento web, el archivo .htaccess se deposita o se oculta en otra carpeta o tiene el acceso bloqueado. En ese caso, la única opción es contactar con el proveedor y solicitar acceso. Si tienes permiso para realizar modificaciones, puedes activar la compresión con gzip a través del módulo del algoritmo deflación (mod_deflate
), añadiendo el siguiente código al archivo .htaccess:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>
txtTambién necesitarás la autorización de tu proveedor de hosting para usar los módulos mod_gzip
y mod_deflate
.
Opción 2: activar la compresión gzip mediante PHP
También puedes activar la compresión gzip utilizando una sencilla línea de código en PHP. La desventaja de este método es que el código debe incluirse en cada archivo PHP por separado. Por eso, esta opción solo se recomienda si no tienes los permisos necesarios para editar el archivo .htaccess. La línea de código que debes añadir al principio de cada archivo es la siguiente:
<?php
ob_start("ob_gzhandler");
?>
phpOpción 3: implementar gzip mediante un plugin
Además de las dos soluciones manuales presentadas, existe otra variante que requiere unos esfuerzos de configuración mínimos: activar la compresión con gzip mediante un plugin para el sistema de gestión de contenidos (CMS) que se esté utilizando. Estas útiles extensiones pueden integrarse en cuestión de minutos y adaptarse fácilmente a tus necesidades. Están disponibles sobre todo para CMS basados en PHP, como WordPress. A continuación, te mostramos tres de los plugins más populares para esta plataforma de blogs:
- W3 Total Cache: el plugin de WordPress W3 Total Cache promete una mejora notable en el rendimiento de la página web. Además de diversos mecanismos de caché y de una asistencia móvil especial, esta suite SEO y de usabilidad también incluye opciones para activar la compresión gzip. WP Rocket: WP Rocket es también un clásico plugin de caching para WordPress. Esta extensión es fácil de usar y activa desde el principio todas las funciones clave para optimizar la velocidad, incluida la compresión gzip.
- WP Performance Score Booster: el plugin WP Performance Score Booster ya cuenta con más de 10 000 instalaciones activas. Con ayuda del plugin se puede activar gzip fácilmente y comprimir de manera efectiva los contenidos de tu proyecto web, tales como textos, HTML, JavaScript, CSS, XML, etc.
¿Cómo se activa gzip en el servidor web NGINX?
Si pones los contenidos de tu página web a disposición a través de un servidor web NGINX, esto te da la posibilidad de emplear la técnica de comprimir con gzip para mejorar el tiempo de carga de tu proyecto. Para ello, solo tienes que configurar adecuadamente el módulo ngx_http_gzip_module
. Por lo general, la directiva gzip
, a través de la que puedes activar o desactivar el servicio de compresión, está desactivada.
Para cambiar esta configuración, abre el archivo nginx.conf
y busca la directiva gzip
. Después, cambia la entrada gzip off
por gzip on
. La siguiente tabla te muestra información sobre el significado y las posibilidades de algunas directivas para configurar la compresión gzip para NGINX:
Directiva | Sintaxis | Configuración predeterminada | Descripción |
---|---|---|---|
gzip_buffers
|
gzip_buffers cantidad tamaño;
|
gzip_buffers 32 4k; 16 8k;
|
Define la cantidad y el tamaño de los búferes para la compresión |
gzip_comp_level
|
gzip_comp_level grado de compresión;
|
gzip_comp_level 1;
|
Ofrece el grado de compresión; valores comprendidos entre 1–9 |
gzip_min_length
|
gzip_min_length longitud mínima;
|
gzip_min_length 20;
|
Indica la longitud mínima en bytes de un archivo comprimido |
gzip_http_version
|
gzip_http_version número de versión;
|
gzip_http_version 1.1;
|
Establece a partir de qué versión de HTTP una petición recibe una respuesta comprimida |
gzip_types
|
gzip_types tipo de contenido;
|
gzip_types text/html;
|
Regula para qué tipos de contenidos es válida la compresión (es posible para: CSS, JSON, XML, etc.) |
¿Cómo se puede examinar la compresión gzip?
Una vez configurada la compresión gzip para tu página web, puedes utilizar diferentes herramientas online para asegurarte de que el procedimiento funciona como esperabas y de que el servidor web entrega contenidos comprimidos para las solicitudes correspondientes. En este sentido se recomienda, sobre todo, la aplicación de Google PageSpeed Insights. Tras introducir el URL de la página web en cuestión, la herramienta analiza automáticamente su contenido y ofrece información sobre los aspectos más destacados de su rendimiento. Entre otros datos, recibirás información sobre si la comprensión gzip está activada.
Como alternativa, también puede llevarse a cabo una sencilla prueba sobre gzip con la herramienta HTTP Compression Test disponible en WhatsMyIP.org.