Glossary
DEFLATE
La compression sans perte derrière la moitié du web
By Buğra SözeriPublished Updated
DEFLATE est un algorithme de compression de données sans perte spécifié dans la RFC 1951. Il combine deux techniques : LZ77 (trouver des sous-chaînes répétées et les remplacer par des références arrière) et le codage de Huffman (attribuer des codes binaires plus courts aux symboles plus fréquents).
DEFLATE est l’algorithme de compression derrière les fichiers image PNG, les archives ZIP, les fichiers compressés gzip (y compris HTTP Content-Encoding: gzip), les flux de données de la bibliothèque zlib, et les fichiers pack de Git. C’est probablement l’algorithme de compression le plus déployé de l’histoire informatique.
Caractéristiques :
- Sans perte — les octets originaux sont récupérables exactement.
- Rapide à décompresser, modérément rapide à compresser.
- Pas de dictionnaire externe, donc tout flux DEFLATE est autonome.
- Bon pour le texte et les données structurées ; médiocre pour les médias déjà compressés.
Les algorithmes plus récents (Brotli, Zstandard) compriment mieux et sont de plus en plus courants sur le web, mais DEFLATE reste le repli universel car chaque navigateur, système d’exploitation et outil le supporte.
L’histoire d’origine libre de brevets : Phil Katz a conçu DEFLATE en 1993 pour PKZIP et l’a explicitement publié libre de redevances. Cette décision est la raison pour laquelle DEFLATE — et non LZW (que Unisys détenait des brevets jusqu’en 2003) ou le codage arithmétique (qu’IBM avait breveté) — est devenu la valeur par défaut universelle. La bibliothèque zlib (Mark Adler & Jean-loup Gailly, 1995) a fourni une implémentation de référence propre sous une licence permissive, permettant à chaque système d’exploitation, navigateur et runtime de langage d’intégrer le même code.
Pourquoi Brotli gagne là où DEFLATE perd : Brotli (Google, 2013) obtient 20-25% de meilleure compression que gzip sur le texte web typique car il est livré avec un dictionnaire statique de 120 kB de fragments courants HTML, CSS et JavaScript — le décodeur “connaît” déjà des phrases comme <html lang="en"> sans avoir à les encoder dans le flux. Zstandard (Facebook, 2016) échange un peu de compression contre une vitesse de décodage beaucoup plus rapide et est maintenant la valeur par défaut pour le noyau Linux et de nombreux workflows de sauvegarde/archivage. Les trois coexistent ; les négociations Accept-Encoding: gzip, br, zstd laissent le serveur choisir celui que le client supporte. Connexe : sans perte, ETag. Référence : RFC 1951 — Spécification du format de données compressées DEFLATE.
Pourquoi ça compte : un exemple mesuré
Prenons un fichier source jQuery 3.7 minifié typique de 100 kB (102 310 octets non compressés). Aux niveaux de compression par défaut : gzip (DEFLATE niveau 6) produit environ 36 200 octets — une réduction de 64,6%. Brotli au niveau 11 réduit le même fichier à environ 28 400 octets (réduction de 72,2%). Zstd niveau 19 arrive à environ 30 100 octets. Les différences semblent modestes isolément mais se cumulent : une page e-commerce typique envoie ~250 kB de JS, CSS et HTML, donc passer de gzip à Brotli économise environ 20 kB sur le réseau — ce qui, à la latence typique d’un aller-retour 4G, se traduit par un premier affichage de contenu plus rapide de 50-150 ms. Brotli est asymétrique en décodage : l’encodage au niveau 11 est lent (~50 ms pour ce fichier de 100 kB) mais le décodage est quasi identique en vitesse à gzip, donc le bon schéma est de pré-compresser les ressources statiques au moment de la construction et d’éviter Brotli à la volée pour les réponses dynamiques.
Niveaux et compromis vitesse/rapport
Les neuf niveaux de compression de DEFLATE (1-9) échangent le temps d’encodage contre la taille de sortie. Le niveau 1 est environ 5× plus rapide que le niveau 9 et produit une sortie environ 10-15% plus grande. La plupart des serveurs web utilisent par défaut le niveau 6, qui se situe au point d’inflexion de la courbe. L’implémentation parallèle pigz, en divisant l’entrée en blocs indépendants, rend le niveau 9 abordable sur les machines multi-cœurs pour les charges de travail d’archivage. Aucun de ces paramètres n’affecte la vitesse de décodage — le décompresseur lit ce que l’encodeur a produit à débit constant. Référence : RFC 1952 — Spécification du format de fichier GZIP.
Frequently asked questions
- Qu’est-ce que DEFLATE ?
- DEFLATE est un algorithme de compression sans perte combinant LZ77 (références arrière aux chaînes répétées précédentes) et le codage de Huffman (codes de longueur variable pour les symboles fréquents). Il est défini dans la RFC 1951 et est le moteur de compression dans les archives ZIP, gzip et les images PNG.
- Comment DEFLATE est-il utilisé en pratique ?
- Quand un navigateur demande une page web, le serveur répond typiquement avec Content-Encoding: gzip — qui est un flux compressé DEFLATE avec un en-tête gzip. Les fichiers HTML, CSS et JS se compriment de 60 à 80%, réduisant significativement le temps de transfert sur les connexions lentes.
- Quelle est la différence entre DEFLATE, gzip et zlib ?
- DEFLATE est l’algorithme de base. zlib enveloppe DEFLATE avec un petit en-tête et une somme de contrôle Adler-32 (utilisé dans PNG et l’encodage HTTP zlib). Gzip enveloppe DEFLATE avec un en-tête plus grand incluant le nom de fichier et CRC-32 (utilisé pour les fichiers et l’encodage HTTP gzip). Les données compressées sont identiques ; seule l’enveloppe diffère.
- Comment DEFLATE se compare-t-il à Brotli et Zstandard ?
- Brotli (utilisé dans la compression HTTP moderne) et Zstandard atteignent typiquement 15 à 25% de meilleure compression que DEFLATE/gzip sur le contenu web, à vitesse de décompression comparable. DEFLATE reste omniprésent car il est intégré dans les formats ZIP, PNG et PDF et bénéficie de décennies de support matériel et logiciel.
Related
Published May 14, 2026 · Last reviewed May 31, 2026