Glossary
DEFLATE
La compressione senza perdita alla base di metà del web
By Buğra SözeriPublished Updated
DEFLATE è un algoritmo di compressione dati senza perdita specificato nell’RFC 1951. Combina due tecniche: LZ77 (trovare sottostringhe ripetute e sostituirle con riferimenti indietro) e la codifica di Huffman (assegnare codici binari più corti ai simboli più comuni).
DEFLATE è l’algoritmo di compressione alla base dei file immagine PNG, degli archivi ZIP, dei file compressi con gzip (incluso HTTP Content-Encoding: gzip), dei flussi di dati della libreria zlib e dei file pack di Git. È probabilmente l’algoritmo di compressione più ampiamente distribuito nella storia dell’informatica.
Caratteristiche:
- Senza perdita — i byte originali sono recuperabili esattamente.
- Rapido da decomprimere, moderatamente rapido da comprimere.
- Nessun dizionario esterno, quindi qualsiasi flusso DEFLATE è autonomo.
- Buono per testo e dati strutturati; mediocre per i media già compressi.
Gli algoritmi più recenti (Brotli, Zstandard) comprimono meglio e sono sempre più comuni sul web, ma DEFLATE rimane il fallback universale perché ogni browser, sistema operativo e strumento lo supporta.
La storia delle origini senza brevetti: Phil Katz ha progettato DEFLATE nel 1993 per PKZIP e lo ha pubblicato esplicitamente senza royalty. Quella decisione è la ragione per cui DEFLATE — non LZW (di cui Unisys deteneva i brevetti fino al 2003) o la codifica aritmetica (brevettata da IBM) — è diventato il default universale. La libreria zlib (Mark Adler & Jean-loup Gailly, 1995) ha fornito un’implementazione di riferimento pulita con una licenza permissiva, che ha consentito a ogni sistema operativo, browser e runtime di linguaggio di includere lo stesso codice.
Perché Brotli vince dove DEFLATE perde: Brotli (Google, 2013) raggiunge una compressione del 20-25% migliore rispetto a gzip sul testo web tipico perché viene fornito con un dizionario statico di 120 kB di frammenti comuni HTML, CSS e JavaScript — il decodificatore “conosce” già frasi come <html lang="en"> senza doverle codificare nel flusso. Zstandard (Facebook, 2016) scambia un po’ di compressione per una velocità di decodifica molto più rapida ed è ora il predefinito per il kernel Linux e molti flussi di lavoro di backup/archiviazione. Tutti e tre coesistono; le negoziazioni Accept-Encoding: gzip, br, zstd consentono al server di scegliere quello supportato dal client. Correlati: senza perdita, ETag. Riferimento: RFC 1951 — Specifica del formato dati compresso DEFLATE.
Perché è importante: un esempio misurato
Prendi un tipico file sorgente minificato jQuery 3.7 da 100 kB (102.310 byte non compressi). Ai livelli di compressione predefiniti: gzip (livello DEFLATE 6) produce circa 36.200 byte — una riduzione del 64,6%. Brotli alla qualità 11 riduce lo stesso file a circa 28.400 byte (72,2% di riduzione). Zstd al livello 19 si attesta a circa 30.100 byte. Le differenze sembrano modeste in isolamento ma si cumulano: una tipica pagina e-commerce trasporta circa 250 kB di JS, CSS e HTML, quindi passare da gzip a Brotli risparmia circa 20 kB sul wire — che alla latenza tipica del round-trip 4G si traduce in 50-150 ms di first contentful paint più veloce. Brotli è asimmetrico in termini di decodifica: la codifica alla qualità 11 è lenta (~50 ms per quel file da 100 kB) ma la decodifica è quasi identica in velocità a gzip, quindi il pattern corretto è pre-comprimere gli asset statici al momento della build e saltare Brotli al volo per le risposte dinamiche.
Livelli e il compromesso velocità/rapporto
I nove livelli di compressione di DEFLATE (1-9) scambiano il tempo di codifica per la dimensione dell’output. Il livello 1 è circa 5× più veloce del livello 9 e produce un output circa del 10-15% più grande. La maggior parte dei server web utilizza il livello 6 per impostazione predefinita, che si trova nel punto di inflessione della curva. L’implementazione parallela pigz, dividendo l’input in blocchi indipendenti, rende il livello 9 conveniente su macchine multi-core per i carichi di lavoro di archiviazione. Nessuna di queste impostazioni influisce sulla velocità di decodifica — il decompressore legge qualunque cosa abbia prodotto il codificatore a throughput costante. Riferimento: RFC 1952 — Specifica del formato file GZIP.
Frequently asked questions
- Cos’è DEFLATE?
- DEFLATE è un algoritmo di compressione senza perdita che combina LZ77 (riferimenti indietro a stringhe ripetute precedenti) e la codifica di Huffman (codici a lunghezza variabile per i simboli frequenti). È definito nell’RFC 1951 ed è il motore di compressione all’interno degli archivi ZIP, gzip e delle immagini PNG.
- Come si usa DEFLATE in pratica?
- Quando un browser richiede una pagina web, il server risponde tipicamente con Content-Encoding: gzip — che è un flusso compresso con DEFLATE con un’intestazione gzip. I file HTML, CSS e JS si comprimono del 60–80%, riducendo significativamente i tempi di trasferimento su connessioni lente.
- Qual è la differenza tra DEFLATE, gzip e zlib?
- DEFLATE è l’algoritmo principale. zlib avvolge DEFLATE con una piccola intestazione e un checksum Adler-32 (usato all’interno di PNG e nella codifica HTTP zlib). Gzip avvolge DEFLATE con un’intestazione più grande che include il nome del file e CRC-32 (usato per file e codifica HTTP gzip). I dati compressi sono identici; differisce solo il wrapper.
- Come si confronta DEFLATE con Brotli e Zstandard?
- Brotli (usato nella compressione HTTP moderna) e Zstandard tipicamente raggiungono una compressione del 15–25% migliore rispetto a DEFLATE/gzip sul contenuto web, a velocità di decompressione comparabile. DEFLATE rimane onnipresente perché è integrato nei formati ZIP, PNG e PDF e ha decenni di supporto hardware e software.
Related
Published May 14, 2026 · Last reviewed May 31, 2026