Compressione GZIP: cos’è e come funziona
La compressione gzip è un algoritmo di compressione dati senza perdita, basato sul formato DEFLATE, che riduce il peso dei file di testo di un sito prima di inviarli dal server al browser, abbreviando i tempi di caricamento delle pagine.
Gzip, i punti chiave
- Cosa comprime: file di testo come HTML, CSS, JavaScript e JSON; non le immagini o i video già compressi.
- Come funziona: unisce l’algoritmo LZ77, che elimina le ripetizioni, e la codifica di Huffman, che accorcia i caratteri più frequenti.
- Riduzione tipica: tra il 70% e il 90% sui file di testo, a seconda del contenuto e della fonte che misura il risparmio.
- Dove agisce: tra server e browser, tramite gli header HTTP
Accept-EncodingeContent-Encoding. - Alternativa più recente: Brotli, che su risorse statiche risparmia il 15-25% di byte in più rispetto a gzip.
Cos’è la compressione gzip
Gzip è anche il nome del programma che esegue questa compressione e dell’estensione file .gz che ne deriva. Il nome è l’abbreviazione di GNU zip. Il progetto nasce nel 1992 a opera di Jean-Loup Gailly e Mark Adler, con la prima versione stabile pubblicata nel febbraio 1993. È un formato libero, diventato lo standard di fatto per comprimere le risorse testuali di un sito prima dell’invio al browser.
Chi si occupa di SEO tecnica considera gzip uno dei controlli di base quando analizza la velocità di un sito, insieme a minificazione del codice e caching. La compressione non tocca il contenuto della pagina: HTML, CSS e JavaScript arrivano al browser identici, solo più leggeri da trasferire. Per i file già compressi (immagini JPG, video MP4, PDF con compressione interna) gzip non produce benefici: il risultato è a volte persino leggermente più pesante dell’originale, per via dell’intestazione che il formato aggiunge a ogni file.

Come funziona la compressione gzip
Gzip comprime un file in due passaggi, entrambi previsti dall’algoritmo DEFLATE:
- LZ77: scansiona il file alla ricerca di sequenze di caratteri già viste in una finestra di dati recenti (fino a 32 KB) e le sostituisce con un riferimento più corto alla prima occorrenza, invece di ripetere la stringa.
- Codifica di Huffman: costruisce un albero binario in cui ai caratteri più frequenti assegna i codici più brevi e a quelli rari i codici più lunghi, riducendo ulteriormente lo spazio occupato dal testo.
Il risultato dipende da quanto il file si ripete: un documento HTML con tag e classi ricorrenti si comprime meglio di un file con testo casuale o già compattato. Se nessuna sequenza si ripete nella finestra di 32 KB, gzip salva comunque il file in formato .gz, ma senza un reale guadagno di spazio.
Vantaggi e limiti della compressione gzip
Il vantaggio principale è la riduzione del peso dei file testuali. Le misurazioni riportate dalle guide tecniche variano: alcune indicano circa il 70% in meno sulla risposta HTTP, altre parlano di un risparmio fino al 90% sulle pagine HTML. La differenza dipende dal tipo di contenuto e dal livello di ripetizione del testo: un foglio di stile con molte regole simili si comprime più di un JSON con dati eterogenei.
Il secondo vantaggio è la compatibilità: gzip è supportato nativamente da tutti i browser moderni e dai principali server (Apache, Nginx, IIS), senza bisogno di configurazioni particolari lato client. Il terzo è l’equilibrio tra tempo di compressione e risorse usate: comprimere e decomprimere un file gzip richiede pochi millisecondi, un costo di calcolo che il server sostiene volentieri a fronte del risparmio di banda.
Il limite riguarda i file che sono già compressi in origine. Immagini, video e PDF non guadagnano nulla dalla compressione gzip, perché i loro formati applicano già un proprio algoritmo. Applicarla comunque aggiunge solo un’intestazione inutile. Uno strumento di audit come Lighthouse, per questo motivo, non segnala le risposte sotto 1,4 KiB o con un risparmio potenziale inferiore al 10% della dimensione originale: sotto quella soglia il guadagno non giustifica l’elaborazione.

Dove si usa la compressione gzip
Nel web, gzip agisce nello scambio HTTP tra server e browser in quattro passaggi: il browser invia la richiesta con l’header Accept-Encoding: gzip, dichiarando di sapere decomprimere; il server, se configurato per farlo, comprime al volo le risorse testuali richieste; il server risponde aggiungendo l’header Content-Encoding: gzip; il browser riceve il file compresso, lo decomprime in pochi millisecondi e lo mostra. Questo scambio riduce i byte effettivamente trasmessi sulla rete, un fattore che pesa soprattutto su connessioni mobili lente.
Sui server web, la compressione gzip viene attivata tramite un modulo: su Apache è mod_deflate (nelle versioni più vecchie mod_gzip), su Nginx è una direttiva nativa del server. CMS come WordPress, Joomla e Drupal offrono impostazioni dedicate o si appoggiano a questi stessi moduli.
Gzip oltre il web: archiviazione con tar.gz
Gzip comprime un solo file alla volta: per raggruppare più file e cartelle serve prima un programma di archiviazione come tar, che li riunisce in un unico pacchetto, poi gzip li comprime. Il risultato è l’estensione .tar.gz (o .tgz), usata soprattutto in ambiente Linux e Unix per backup e distribuzione di software. Gunzip, il comando che inverte l’operazione, riconosce anche formati creati da altri programmi di compressione, con alcune limitazioni: un file zip, per esempio, viene decompresso solo se contiene un singolo elemento compresso con il metodo “deflation”.
Quando la compressione gzip non serve
Se il file è già compresso: non comprimerlo di nuovo
Immagini JPG, video MP4 e PDF usano algoritmi di compressione propri. Applicare gzip su questi formati non riduce il peso e in alcuni casi lo aumenta leggermente, per l’intestazione che il formato gzip aggiunge a ogni file compresso.
Se la risposta è molto piccola: valuta se vale lo sforzo
Per contenuti sotto 1,4 KiB, o quando il risparmio stimato è inferiore al 10% della dimensione originale, il guadagno è minimo rispetto al tempo di elaborazione: è la soglia che uno strumento di audit come Lighthouse usa per decidere se segnalare la mancata compressione di una risorsa.
Livelli di compressione gzip: quanto costano in CPU
Da riga di comando, gzip accetta un livello di compressione da 1 a 9: 1 è il più veloce e meno efficace, 9 il più lento e più efficace, con 5 come valore predefinito. Dietro questa semplice opzione ci sono algoritmi diversi, con un rapporto preciso tra guadagno e costo di calcolo che un ambiente di backup e storage come Data Domain documenta in modo puntuale.
| Passaggio | Compressione in più | Costo in CPU |
|---|---|---|
| da lz a gzfast | circa il 15% in più | 2 volte |
| da gzfast a gz | dal 10% al 15% in più | più alto, non quantificato |
| da lz a gz | circa il 30% in più | 5 volte |
Questi numeri vengono da https://www.dell.com/support/kbdoc/it-it/000022100/data-domain-domande-frequenti-sulla-compressione e descrivono un sistema di backup, non un server web: li riporto perché mostrano un principio che vale anche lato sito, cioè che un livello di compressione più alto non è mai gratis, si paga in tempo di elaborazione. Nello stesso documento, il primo backup completo ottiene una compressione 2 volte superiore all’originale, mentre un backup successivo senza modifiche ai dati arriva a una compressione 200 volte superiore, perché gran parte del contenuto è già stata vista. Sul web questo si traduce in una regola pratica: per le risposte generate al volo da un server con traffico alto, un livello intermedio (5 o 6) è quasi sempre la scelta più ragionevole; il livello 9 ha senso solo per risorse statiche compresse una volta sola e servite molte volte, dove il costo di calcolo si paga una sola volta.
Gzip o Brotli: come scegliere
La domanda non ha una sola risposta valida sempre: dipende dal browser che fa la richiesta e dal tipo di risorsa.
Se il browser dichiara supporto a Brotli: preferisci Brotli
Nell’header Accept-Encoding il browser elenca gli algoritmi che sa decomprimere. Se compare br, conviene servire Brotli: su risorse statiche risparmia il 15-25% di byte in più rispetto a gzip.
Se serve compatibilità con tutti i browser: usa gzip
Gzip resta supportato ovunque, incluso Safari su iOS dove Brotli, a dicembre 2022, non era ancora coperto secondo la documentazione di Lighthouse. In pratica gzip produce file più piccoli del 50-70% rispetto all’originale, un risultato tipico in produzione rispetto ai valori più alti citati in altre guide.
| Caratteristica | Gzip | Brotli |
|---|---|---|
| Compressione tipica | 50-70% in meno rispetto all’originale | 15-25% di byte in più risparmiati rispetto a gzip |
| Compatibilità browser | universale | tutti i browser principali, con l’eccezione storica di Safari iOS |
| Quando preferirlo | compatibilità garantita, contenuti dinamici | risorse statiche, browser che lo dichiarano in Accept-Encoding |
La configurazione più diffusa prevede entrambi gli algoritmi attivi sul server, con Brotli come prima scelta e gzip come alternativa automatica per i client che non lo supportano: è un’impostazione da fare una volta, non una decisione da rifare per ogni sito. Attivare l’una o l’altra, o verificare che siano davvero in funzione, è un passaggio tecnico che tratto nell’ambito dell’ottimizzazione Core Web Vitals; per controllare lo stato di compressione insieme ad altri aspetti tecnici del sito, il punto di partenza è una verifica completa come quella descritta in come si fa l’analisi di un sito web.
Domande frequenti sulla compressione gzip
Che cos’è la compressione gzip?
Gzip è un algoritmo e formato di compressione dati senza perdita, basato su DEFLATE, usato per ridurre il peso dei file di testo di un sito prima di inviarli al browser. Il nome è l’abbreviazione di GNU zip.
Come funziona la compressione gzip?
Funziona in due fasi: LZ77 individua le sequenze ripetute e le sostituisce con riferimenti brevi, poi la codifica di Huffman assegna i codici più corti ai caratteri più frequenti. Entrambe le fasi fanno parte dell’algoritmo DEFLATE.
Quanto riduce il peso dei file la compressione gzip?
Tra il 70% e il 90% sui file di testo come HTML, CSS e JavaScript, secondo le diverse misurazioni disponibili: la percentuale esatta dipende da quanto il contenuto si ripete al suo interno.
Dove si usa la compressione gzip?
Soprattutto nello scambio HTTP tra server e browser, tramite gli header Accept-Encoding e Content-Encoding, ma anche in ambiente Linux per creare archivi tar.gz che raggruppano e comprimono più file insieme.
Gzip comprime anche le immagini?
No, non in modo utile. Immagini, video e PDF usano già un proprio algoritmo di compressione: applicare gzip su questi formati non riduce il peso e può persino aumentarlo leggermente.
Qual è la differenza tra gzip e Brotli?
Brotli è un algoritmo più recente che su risorse statiche risparmia il 15-25% di byte in più rispetto a gzip, ma non è supportato in modo identico da tutti i browser storici; gzip resta la scelta compatibile ovunque.
Quando la compressione gzip non serve?
Quando il file è già compresso in origine o quando la risposta pesa meno di 1,4 KiB con un risparmio stimato inferiore al 10%: sotto quella soglia il guadagno non giustifica l’elaborazione.