Skip to content

Glossary

DEFLATE

La compressione senza perdita alla base di metà del web

By Published 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&rsquo;è 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&rsquo;RFC 1951 ed è il motore di compressione all&rsquo;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&rsquo;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&rsquo;algoritmo principale. zlib avvolge DEFLATE con una piccola intestazione e un checksum Adler-32 (usato all&rsquo;interno di PNG e nella codifica HTTP zlib). Gzip avvolge DEFLATE con un&rsquo;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