Aller au contenu
Aback Tools Logo

Générateur de middleware de compression Express.js

Générez la configuration du middleware de compression Express.js avec le paquet npm compression - en ligne et gratuitement. Notre générateur de middleware de compression Express.js produit une configuration complète et prête à coller, avec niveau de compression configurable (1-9), seuil de taille de réponse, fonction de filtre personnalisée pour ignorer les types de contenu déjà compressés et middleware d'en-tête Vary. Prend en charge les sorties CommonJS, ESM et TypeScript, ainsi que les variantes Fastify (@fastify/compress) et Koa (koa-compress). Sans inscription, 100 % dans le navigateur.

Express.js Compression Middleware Generator
Configure the options below to generate an Express.js compression middleware setup using the compression npm package. Supports CommonJS, ESM, and TypeScript output. All generation happens in your browser - no signup required.
1 (fastest)Default - recommended for most apps9 (smallest)

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-gzip

The 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.

Pourquoi utiliser notre générateur de middleware de compression Express.js ?

  • Génération instantanée de la configuration de compression Express.js : notre générateur de middleware de compression Express.js produit instantanément une configuration de middleware complète et prête à coller - objet d'options compression, fonction de filtre personnalisée, middleware d'en-tête Vary et notes sur le passage à Brotli inclus. Aucune lecture manuelle de la documentation npm nécessaire.
  • Générateur de middleware de compression Express.js en ligne sécurisé : vos choix de configuration ne quittent jamais votre appareil lorsque vous utilisez notre générateur de middleware de compression Express.js en ligne. Toute la génération de code s'exécute entièrement dans votre navigateur - aucune requête serveur, aucune conservation de données, 100 % privé.
  • Sorties CommonJS, ESM et TypeScript : générez le middleware de compression Express.js dans le format de module de votre choix - CommonJS (require), ESM (import) ou TypeScript avec annotations de type complètes. Prend également en charge les variantes Express Router, Fastify (@fastify/compress) et Koa (koa-compress).
  • Générateur de middleware de compression Express.js sans installation : générez la configuration du middleware de compression Express.js directement dans votre navigateur. Sans Node.js, sans npm, sans IDE. Notre générateur gratuit fonctionne sur tout appareil doté d'un navigateur moderne - sans inscription, sans limite de taille.

Foire aux questions

Un générateur de middleware de compression Express.js produit une configuration de middleware de compression prête à coller pour les applications Express.js utilisant le paquet npm compression. Notre générateur de middleware de compression Express.js en ligne gratuit crée la configuration complète - niveau de compression, seuil, filtre personnalisé et middleware d'en-tête Vary inclus.

Le middleware de compression doit être enregistré avant toutes les routes et avant les appels à express.static(). Si vous l'enregistrez après une route, les réponses de cette route ne seront pas compressées. Le code généré contient un commentaire indiquant l'emplacement correct.

Oui. Toute la génération de code s'exécute entièrement dans votre navigateur en JavaScript. Aucune donnée de configuration n'est envoyée à un serveur, stockée à distance ou transmise sur le réseau.

Oui - 100 % gratuit, pour toujours. Sans inscription, sans compte, sans offre payante, sans limite de taille de fichier et sans publicité qui interrompt votre travail.

Non - le paquet npm compression ne prend en charge que GZIP et DEFLATE. Pour Brotli dans Express.js, utilisez shrink-ray-current ou express-static-gzip pour servir des fichiers .br précompressés. Le code généré contient un commentaire expliquant les deux options.

Le niveau 6 (par défaut) est recommandé pour la plupart des applications Express.js - il offre un bon équilibre entre taux de compression et coût CPU. Utilisez le niveau 1 pour les API à fort débit où le coût CPU est un critère.

Sans filtre personnalisé, le middleware de compression tentera de compresser des types de contenu déjà compressés - JPEG, PNG, WebP, vidéo, ZIP et polices WOFF2. Cela consomme du CPU sans aucun gain de taille. La fonction de filtre personnalisée du code généré ignore automatiquement ces types de contenu.

L'option threshold définit la taille minimale de réponse en octets en dessous de laquelle la compression est ignorée. Compresser de très petites réponses consomme du CPU et ajoute de la surcharge sans gain de taille significatif. Le seuil par défaut de 1 Ko est recommandé pour la plupart des applications.

La variante app d'Express enregistre le middleware de compression globalement sur toute l'application. La variante Router l'enregistre uniquement sur un routeur spécifique, ce qui permet d'appliquer la compression de façon sélective à certains groupes de routes.