Generador de middleware de compresión para Express.js
Genera la configuración del middleware de compresión de Express.js con el paquete npm compression, online y gratis. Nuestro generador produce una configuración completa y lista para pegar, con nivel de compresión configurable (1-9), umbral de tamaño de respuesta, función de filtro personalizada para omitir tipos de contenido ya comprimidos y middleware de cabecera Vary. Admite salida CommonJS, ESM y TypeScript, además de variantes para Fastify (@fastify/compress) y Koa (koa-compress). Sin registro, 100 % en el navegador.
compression npm package. Supports CommonJS, ESM, and TypeScript output. All generation happens in your browser - no signup required.Responses smaller than this threshold are not compressed. 1KB is the recommended default.
Higher values use more memory but improve compression speed. Default (8) is recommended for most servers.
Options
Install
npm install compression
app.js
const compression = require('compression');
const express = require('express');
// Custom filter - skip compression for already-compressed content types
function shouldCompress(req, res) {
// Don't compress responses with this request header
if (req.headers['x-no-compression']) return false;
// Skip already-compressed content types
const contentType = res.getHeader('Content-Type');
if (typeof contentType === 'string') {
const skipTypes = [
'image/jpeg', 'image/png', 'image/webp', 'image/avif',
'image/gif', 'video/', 'audio/', 'application/zip',
'application/gzip', 'application/x-bzip2', 'font/woff2',
];
if (skipTypes.some(t => contentType.startsWith(t))) return false;
}
// Fall back to default compression filter
return compression.filter(req, res);
}
const app = express();
// -- Compression middleware ----------------------------------------------------
// Must be registered BEFORE routes and static file serving
app.use(compression({
// Compression level: 1 (fastest) to 9 (smallest). Default is zlib.Z_DEFAULT_COMPRESSION (6).
level: 6,
// Only compress responses above this byte threshold
threshold: 1024, // 1KB
// Custom filter function - skips already-compressed content types
filter: shouldCompress,
}));
// Ensure Vary: Accept-Encoding is set for correct CDN caching
app.use((_req, res, next) => {
res.setHeader('Vary', 'Accept-Encoding');
next();
});
// -- Your routes --------------------------------------------------------------
app.get('/', (req, res) => {
res.json({ message: 'Hello, compressed world!' });
});
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
// -- Brotli support note ------------------------------------------------------
// The 'compression' package only supports GZIP and DEFLATE.
// For Brotli support in Express, use 'shrink-ray-current' instead:
//
// npm install shrink-ray-current
//
// const shrinkRay = require('shrink-ray-current');
// app.use(shrinkRay());
//
// Or use 'express-static-gzip' to serve pre-compressed .br and .gz files:
// npm install express-static-gzipThe compression package uses Node.js's built-in zlib module and supports GZIP and DEFLATE only. Register it before all routes and express.static() calls for it to take effect.
¿Por qué usar nuestro generador de middleware de compresión para Express.js?
- Generación instantánea de la configuración de compresión de Express.js: nuestro generador produce al instante una configuración de middleware completa y lista para pegar, incluidos el objeto de opciones de compression, la función de filtro personalizada, el middleware de cabecera Vary y notas sobre la mejora a Brotli. Sin necesidad de leer la documentación de npm a mano.
- Generador de middleware de compresión para Express.js online seguro: tus elecciones de configuración nunca salen de tu dispositivo al usar nuestro generador online. Toda la generación de código se ejecuta enteramente en tu navegador - sin peticiones a servidores, sin retención de datos, 100 % privado.
- Salida CommonJS, ESM y TypeScript: genera el middleware de compresión de Express.js en el formato de módulo que prefieras - CommonJS (require), ESM (import) o TypeScript con anotaciones de tipo completas. También admite variantes de Express Router, Fastify (@fastify/compress) y Koa (koa-compress).
- Generador de middleware de compresión para Express.js sin instalación: genera la configuración del middleware de compresión de Express.js directamente en tu navegador. Sin Node.js, sin npm y sin IDE. Nuestro generador grátis funciona en cualquier dispositivo con un navegador moderno - sin registro y sin límites de tamaño.
Preguntas frecuentes
Un generador de middleware de compresión para Express.js produce una configuración de middleware de compresión lista para pegar en aplicaciones Express.js usando el paquete npm compression. Nuestro generador online grátis crea la configuración completa, incluidos el nivel de compresión, el umbral, el filtro personalizado y el middleware de cabecera Vary.
El middleware de compresión debe registrarse antes de todas las rutas y antes de las llamadas a express.static(). Si lo registras después de una ruta, las respuestas de esa ruta no se comprimirán. El código generado incluye un comentario que indica la ubicación correcta.
Sí. Toda la generación de código se ejecuta enteramente en tu navegador con JavaScript. Ningún dato de configuración se envía a servidor alguno, se almacena de forma remota ni se transmite por la red.
Sí: 100 % grátis, para siempre. Sin registro, sin cuenta, sin plan de pago, sin límites de tamaño de archivo y sin anuncios interrumpiendo tu trabajo.
No: el paquete npm compression solo admite GZIP y DEFLATE. Para compatibilidad con Brotli en Express.js, usa shrink-ray-current o express-static-gzip para servir archivos .br precomprimidos. El código generado incluye un comentario que explica ambas opciones.
Se recomienda el nivel 6 (el predeterminado) para la mayoría de aplicaciones Express.js: ofrece un buen equilibrio entre tasa de compresión y coste de CPU. Usa el nivel 1 en API de alto rendimiento donde el coste de CPU sea relevante.
Sin un filtro personalizado, el middleware de compresión intentará comprimir tipos de contenido ya comprimidos: JPEG, PNG, WebP, vídeo, ZIP y fuentes WOFF2. Eso consume CPU sin ningún beneficio de tamaño. La función de filtro personalizada del código generado omite automáticamente estos tipos de contenido.
La opción threshold establece el tamaño mínimo de respuesta en bytes por debajo del cual se omite la compresión. Comprimir respuestas muy pequeñas consume CPU y añade sobrecarga sin ahorros significativos. Se recomienda el umbral predeterminado de 1 KB para la mayoría de aplicaciones.
La variante de app de Express registra el middleware de compresión globalmente en toda la aplicación. La variante de Router lo registra solo en un router concreto, lo que te permite aplicar la compresión de forma selectiva a ciertos grupos de rutas.