Compression en JavaScript (Node.js): guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Compression en JavaScript (Node.js): guía completa con ejemplos

1. ¿Qué es y por qué usarla?

La librería compression para Node.js es un middleware para el framework Express (y otros compatibles) que comprime automáticamente las respuestas HTTP del servidor usando algoritmos como Gzip, Deflate o Brotli. Es el estándar de facto para optimizar el rendimiento de aplicaciones web en Node.js, ya que reduce significativamente el tamaño de los datos transferidos (HTML, CSS, JavaScript, JSON, imágenes, etc.) entre el servidor y el cliente.

¿Por qué es necesaria? En la web moderna, la velocidad de carga es crucial para la experiencia del usuario y el SEO. La compresión puede reducir el volumen de tráfico entre 3 y 10 veces, según el tipo de contenido. Por ejemplo, un archivo HTML de 100 KB puede pesar solo 10–15 KB tras la compresión Gzip. Esto es especialmente útil para usuarios móviles con datos limitados y para APIs que devuelven grandes objetos JSON. Sin compression, el servidor enviaría datos "en bruto", aumentando el tiempo de carga y la carga de la red.

La librería automatiza todo el proceso: verifica el encabezado Accept-Encoding de la solicitud, selecciona el algoritmo adecuado (generalmente gzip o brotli si es compatible), comprime la respuesta y agrega los encabezados correspondientes (Content-Encoding, Vary). El desarrollador solo necesita integrar el middleware en la cadena de procesamiento de Express. Esto hace que compression sea una herramienta indispensable para cualquier aplicación en producción con Node.js.

2. Instalación

La librería se instala mediante npm (Node Package Manager). Asegúrate de tener Node.js (versión 12 o superior). Ejecuta el siguiente comando en la raíz de tu proyecto:

npm install compression

Si usas yarn:

yarn add compression

Una vez instalada, la librería estará disponible para importarla en tu código.

3. Inicio rápido — ejemplo mínimo funcional

La forma más sencilla de empezar a usar compression es integrarlo como middleware en Express. A continuación, un servidor mínimo que comprime todas las respuestas:

const express = require('express');
const compression = require('compression');
const app = express();
const port = 3000;

// Integramos el middleware de compresión
app.use(compression());

// Ruta básica
app.get('/', (req, res) => {
  // Enviamos una respuesta grande (repetimos el string 1000 veces)
  const bigData = '¡Hola, Mundo! '.repeat(1000);
  res.send(bigData);
});

app.listen(port, () => {
  console.log(`Servidor iniciado en http://localhost:${port}`);
});

Después de ejecutar (node app.js), abre el navegador en http://localhost:3000. En las herramientas de desarrollo (pestaña Network) verás que la respuesta está comprimida (encabezado Content-Encoding: gzip). El tamaño de la respuesta será varias veces menor que el original.

4. Métodos/funciones/clases principales

La librería compression proporciona una función principal: el middleware, que se configura mediante un objeto de opciones. A continuación, los 8 aspectos clave para trabajar con ella.

4.1. compression([options]) — creación del middleware

Firma: compression(options?: CompressionOptions): RequestHandler

Qué hace: Crea y devuelve una función middleware para Express. Acepta un objeto opcional con configuraciones.

Ejemplo:

const compression = require('compression');
const app = require('express')();

// Sin opciones (comportamiento por defecto)
app.use(compression());

// Con opciones
app.use(compression({
  level: 6,          // Nivel de compresión (0-9)
  threshold: 1024,   // No comprimir respuestas menores a 1 KB
  filter: (req, res) => {
    // Lógica de filtrado personalizada                    

Recommendations