Compression pour JavaScript (Node.js) : guide complet avec exemples
1. Qu'est-ce que c'est et pourquoi l'utiliser ?
La bibliothèque compression pour Node.js est un middleware (intergiciel) pour le framework Express (et autres frameworks compatibles) qui compresse automatiquement les réponses HTTP du serveur à l'aide des algorithmes Gzip, Deflate ou Brotli. C'est la norme de facto pour optimiser les performances des applications web Node.js, car elle réduit considérablement la taille des données transmises (HTML, CSS, JavaScript, JSON, images, etc.) entre le serveur et le client.
Pourquoi est-ce important ? Dans le web moderne, la vitesse de chargement des pages est cruciale pour l'expérience utilisateur et le référencement (SEO). La compression des données permet de réduire le volume de trafic de 3 à 10 fois (selon le type de contenu). Par exemple, un fichier HTML de 100 Ko peut ne peser que 10 à 15 Ko après compression Gzip. C'est particulièrement pertinent pour les utilisateurs mobiles ayant un trafic limité et pour les API renvoyant de gros objets JSON. Sans compression, le serveur envoie des données "brutes", ce qui augmente le temps de chargement et la charge réseau.
La bibliothèque automatise entièrement le processus : elle vérifie l'en-tête Accept-Encoding dans la requête du client, sélectionne l'algorithme de compression approprié (généralement gzip ou brotli si supporté), compresse la réponse et ajoute les en-têtes correspondants (Content-Encoding, Vary). Le développeur a simplement besoin d'intégrer le middleware dans la chaîne de traitement des requêtes Express. Cela fait de compression un outil indispensable pour toute application Node.js en production.
2. Installation
La bibliothèque s'installe via npm (Node Package Manager). Assurez-vous d'avoir Node.js (version 12 ou supérieure) installé. Exécutez la commande à la racine de votre projet :
npm install compression
Si vous utilisez yarn :
yarn add compression
Une fois installée, la bibliothèque est disponible pour l'importation dans votre code.
3. Démarrage rapide — exemple minimal fonctionnel
La façon la plus simple de commencer à utiliser compression est de l'intégrer comme middleware dans Express. Voici un serveur minimal qui compresse toutes les réponses :
const express = require('express');
const compression = require('compression');
const app = express();
const port = 3000;
// Intégration du middleware de compression
app.use(compression());
// Route standard
app.get('/', (req, res) => {
// Envoi d'une réponse volumineuse (répétition de la chaîne 1000 fois)
const bigData = 'Bonjour, le monde ! '.repeat(1000);
res.send(bigData);
});
app.listen(port, () => {
console.log(`Serveur démarré sur http://localhost:${port}`);
});
Après avoir lancé (node app.js), ouvrez le navigateur à l'adresse http://localhost:3000. Dans les outils de développement (onglet Network), vous verrez que la réponse est compressée (en-tête Content-Encoding: gzip). La taille de la réponse sera plusieurs fois inférieure à l'originale.
4. Méthodes/fonctions/classes principales
La bibliothèque compression fournit une fonction principale — le middleware, configurable via un objet d'options. Voici 8 aspects clés pour l'utiliser.
4.1. compression([options]) — création du middleware
Signature : compression(options?: CompressionOptions): RequestHandler
Fonction : Crée et retourne une fonction middleware pour Express. Accepte un objet optionnel de configuration.
Exemple :
const compression = require('compression');
const app = require('express')();
// Sans options (comportement par défaut)
app.use(compression());
// Avec options
app.use(compression({
level: 6, // Niveau de compression (0-9)
threshold: 1024, // Ne pas compresser les réponses de moins de 1 Ko
filter: (req, res) => {
// Logique de filtrage personnalisée Aussi dans la bibliothèque
Travailler avec CSV en Go (Golang) : guide complet du package encoding/csv
Mise en cache dans Node.js : Redis et alternatives pour accélérer les applications
Génération de PDF en C++ : bibliothèques, outils et exemples de code
Travailler avec Kafka en Java : bibliothèques, configuration et exemples de code
DomPDF pour PHP : guide complet avec exemples