Che cos’è gzip? Una panoramica sul software per la compressione dei file

gzip, strumento per la compressione dei dati, nasce ad opera dei programmatori Jean-Loup Gailly e Mark Adler, che si erano prefissati il compito di sviluppare un’alternativa convincente a compress, programma scritto per Unix. La funzione e il comportamento di quest’ultimo seguono lo standard POSIX, che dal canto suo prevede la compressione dei file grazie all’aiuto dell’algoritmo adattativo Lempel-Ziv-Markov.

Questo algoritmo, così come la sua espansione realizzata da Terry Welch, sono stati protetti a lungo, esattamente fino al 2003, tramite dei brevetti americani; questo è stato un fattore decisivo nel portare alla creazione di un degno sostituto. Oltretutto il focus era sul riuscire a rendere la compressione tramite gzip nettamente più efficiente rispetto a quella dello strumento utilizzato su Unix. Obiettivo decisamente raggiunto.

Come funziona gzip?

Il programma gzip, che è la forma abbreviata di “GNU zip”, si basa sull’algoritmo Deflate, utilizzabile liberamente e che consiste in una variazione del processo di compressione dei dati LZ77 (Lempel-Ziv 77), e sulla codifica di Huffman. Proprio con l’aiuto di queste tecniche gzip scansiona i file in cerca di stringhe di dati doppie (sequenze di caratteri). Nel caso in cui il programma incontri determinate sequenze ricorrenti, queste vengono sostituite attraverso un archivio sulla prima stringa che compare, dove la lunghezza di una tale sequenza è solitamente limitata a 32.000 byte. Se una sequenza non si presenta nei 32.000 byte precedenti, allora il file verrà salvato senza compressione in formato gzip, con estensione .gz. Il procedimento è limitato ai singoli file, perciò è necessario un programma di compressione aggiuntivo al fine di creare dei cosiddetti archivi tarball, con estensioni .tar.gz o .tgz.

Consiglio

Di norma il file di output viene eliminato in seguito alla compressione tramite gzip. Tuttavia è possibile disattivare questa funzione automatica tramite l’impostazione di parametri opzionali (-k).

Per decomprimere pacchetti compressi in precedenza, si può fare affidamento sia sul programma gunzip sia sul corrispettivo comando di gzip. Le caratteristiche e la struttura del formato di gzip, nel quale vengono trasformati i file con la compressione, sono definiti nelle specifiche RFC 1951 e 1952, pubblicate nel 1996. Di questi fanno parte ad esempio un’intestazione con lunghezza 10 byte con numero di versione e data di creazione, un header aggiuntivo opzionale, che ad esempio salva il nome originale del file di output, così come un piè di pagina di 8 byte, che tra le altre cose contiene un checksum per l’individuazione di eventuali errori.

Quali sono gli utilizzi di questo strumento per la compressione?

Il programma gzip è stato originariamente sviluppato per la piattaforma GNU compatibile con UNIX, ma oggi è utilizzabile su quasi ogni piattaforma, fin quanto la licenza GPL scelta per il progetto venga rispettata. Ad esempio sui sistemi Linux, questo strumento per la compressione dei dati è solitamente installato automaticamente o in alternativa è contenuto nel sistema di gestione dei pacchetti, pronto per essere installato.

Oltre alle varie edizioni per i sistemi operativi più datati, esistono anche versioni per macOS e Windows, scaricabili sulla pagina ufficiale di gzip. Inoltre la compressione di gzip è utilizzata da anni da programmi per la gestione dei server web come ad esempio Apache, anche se questa funzione non viene sempre utilizzata, e dai browser moderni, che sono in grado di interpretare i file compressi e di decomprimerli durante il rendering dei siti web.

Il programma gzip mostra il meglio di sé nell’ambito dello sviluppo web: una volta attivato il processo, il server web inizia automaticamente la compressione degli elementi caricati nello spazio web così come degli elementi dinamici del sito web. In questo modo il tempo di caricamento del sito web sarà considerevolmente inferiore per il visitatore. Dovendo quindi gli utenti caricare solamente i pacchetti dati compressi, le stesse pagine web sono notevolmente più rapide da ricostruire.

La decompressione da parte del browser fa sì che la banda larga necessaria per il caricamento di una o più pagine sia limitata. Specialmente gli utenti da dispositivi mobili beneficiano di questo miglioramento delle performance, che va inoltre ad influire positivamente anche sul ranking dei motori di ricerca.

gzip: sintassi e comandi generali

Anche quando ci sono delle interfacce grafiche per le diverse piattaforme, l’utilizzo di gzip tramite il terminale, ovvero la riga di comando, non presenta particolari problemi. Anche per i neofiti questa non dovrebbe rappresentare una sfida troppo impegnativa, poiché gzip è ottimizzato per diverse modalità d’utilizzo, in quanto strumento classico della riga di comando. La sintassi ha generalmente la seguente forma:

gzip opzioni file

L’immissione di opzioni non è in alcun modo obbligatoria. Lasciando il campo vuoto, gzip farà riferimento alle impostazioni standard. Dunque basterà il semplice comando

gzip esempio.txt

per creare una versione compressa del file di testo esempio.txt. Successivamente, per decomprimere i file o per dare istruzioni specifiche riguardanti il grado di compressione, il luogo di archiviazione o per indicare come comportarsi con il file originale, ai comandi bisogna associare sempre le giuste specificazioni. La seguente tabella fornisce i comandi gzip più importanti:

Opzione Descrizione
-1 … -9 Definisce il grado di compressione (1-9), dove il valore 1 corrisponde al tipo di compressione più basso e veloce, mentre il valore 9 equivale a quello migliore ma che richiede un maggior tempo; il valore standard preimpostato è 5
-r Ricerca ricorsivamente la cartella (incluse tutte le sottocartelle) e comprime o decomprime tutti i file contenuti al suo interno
-f Forza la compressione gzip e sovrascrive, in caso sia necessario, i file già presenti con lo stesso nome
-d Decomprime i file selezionati nella cartella attuale
-k Impedisce la cancellazione del file originale
-l Mostra le informazioni dei file, come ad esempio il grado di compressione
-c Crea un file compresso per uno standard output, di solito lo schermo di un PC, connesso alla riga di comando
-q Disattiva completamente le comunicazioni da parte del programma gzip
-t Testa l’integrità del file compresso
-h Elenca tutte le opzioni disponibili

Istruzioni sull’uso di gzip per il vostro progetto web con Apache

I server web offrono generalmente un procedimento di compressione pratico sotto forma di un modulo che deve essere però attivato. Oggigiorno, a differenza di com’era in passato, molti provider offrono questa funzione gratuitamente. La ragione per cui questa funzione era a pagamento è che il processo di compressione richiede delle performance aggiuntive del processore. Se non siete certi se il vostro provider offra o meno l’implementazione di gzip, potete contattarlo direttamente o in alternativa eseguire un’interrogazione manuale. Nel caso in cui si tratti di un web server Apache, potete verificare le impostazioni del modulo tramite la funzione phpinfo(). Con il comando HTTP_ACCEPT_ENCODING scoprirete se e quali metodi di compressione avete a disposizione.

Nel caso in cui gzip sia disponibile, avete diverse opzioni, per utilizzare il software di compressione per il vostro fine specifico.

Attivare la compressione gzip dal file .htaccess

Tramite un file .hatccess potete utilizzare delle impostazioni specifiche per le cartelle, che valgono per quella attuale e per tutte le sottocartelle, configurando così il vostro server web in tempo reale. In questo modo il file di configurazione, che solitamente va cercato all’interno della root, verrà letto automaticamente ogniqualvolta una richiesta raggiunga il server. Ad ogni modo il file .htaccess è in alcuni casi presente in un’altra cartella, nascosto o ne viene addirittura impedito l’accesso. In tal caso l’unica opzione possibile è quella di contattare il provider e richiedere l’accesso. Una volta ottenuto, attivate la compressione gzip (mod_gzip) o il modulo per l’algoritmo Deflate (mod_deflate), ed inserite il seguente codice nel file .htaccess:

<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>
Consiglio

Anche per i moduli mod_gzip e mod_deflate necessitate l’abilitazione da parte del vostro provider.

Attivare la compressione gzip tramite PHP

È possibile attivare il processo di compressione gzip grazie ad un semplice comando PHP. Il problema sta però nel fatto che il codice va inserito singolarmente in ogni documento PHP. Vi conviene procedere in questo modo solo se non disponete dell’accesso necessario per potere elaborare il file .htaccess. La riga di codice che dovrete inserire all’inizio del file in questione è la seguente:

<?php
ob_start("ob_gzhandler");
?>

Implementare gzip per il plug-in dei CMS

Oltre alle due soluzioni manuali proposte, vi è una variante che richiede invece un dispendio di energie minimo da un punto di vista delle impostazioni, ovvero l’attivazione della compressione gzip attraverso un plug-in per il CMS da voi utilizzato. Queste utili espansioni, integrabili in pochi minuti e adattabili alle vostre necessità, le potete trovare soprattutto per i CMS come WordPress, basati sul linguaggio di scripting PHP. Il seguente elenco contiene tre dei plug-in più amati per questo software per i blog:

  • W3 Total Cache: il plug-in per WordPress W3 Total Cache offre un miglioramento delle prestazioni del vostro sito web, fino a dieci volte superiori. Oltre a diversi meccanismi di caching e ad un supporto specifico per dispositivi mobili, questa suite per la SEO e per l’usabilità fornisce anche opzioni per attivare la compressione gzip.
  • Check and Enable GZIP compression: con questa estensione, anch’essa sviluppata per il CMS di WordPress, potete controllare se la compressione gzip è attivata per il vostro progetto o meno; a questo scopo il plug-in fa affidamento sul servizio online checkgzipcompression.com. Nel caso in cui essa non sia attivata, il plug-in vi supporterà durante l’impostazione.
  • WP Performance Score Booster: l’estensione WP Performance Score Booster può già contare su oltre 150.000 download e 30.000 installazioni attive. Con l’aiuto di questo plug-in attivate gzip senza grosse difficoltà e riuscirete a comprimere efficacemente i contenuti del vostro progetto web come testi, HTML, JavaScript, CSS, XML ed altri.

Nel caso utilizziate altri sistemi, come ad esempio Joomla, potete fare a meno di estensioni, poiché in questo caso sono già comprese nell’installazione di base delle funzioni per la compressione.

Attivare gzip sul vostro server web NGINX

Se utilizzate un server web NGINX per mettere online dei contenuti del vostro sito web, avete la possibilità di utilizzare gzip per ridurre i tempi di caricamento del vostro progetto. A questo scopo dovete unicamente configurare correttamente il modulo ngx_http_gzip_module. Di regola la direttiva “gzip”, tramite la quale attivate e disattivate il servizio di compressione, è disabilitata. Per modificare questa impostazione, aprite il file nginx.conf, cercate la direttiva “gzip” e passate successivamente da “gzip off” a “gzip on”. Grazie alla seguente tabella potete apprendere il significato e le possibilità di alcune ulteriori direttive per la configurazione della compressione gzip sui server NGINX.

Direttiva Sintassi Impostazione Standard Descrizione
gzip_buffers gzip_buffers Dimensione desiderata; gzip_buffers 32 4k; 16 8k; Definisce il numero e la dimensione del buffer per il processo di compressione
gzip_comp_level gzip_comp_level Grado di compressione; gzip_comp_level 1; Determina il grado di compressione; valori selezionabili: 1-9
gzip_min_length gzip_min_length Lunghezza minima; gzip_min_length 20; Determina la lunghezza minima in byte del file compresso
gzip_http_version gzip_http_version Numero della versione; gzip_http_version 1.1; Determina con quale versione HTTP viene risposta una richiesta
gzip_types gzip_types Tipo di contenuto; gzip_types text/html; Regola per quale tipo di contenuto deve valere la compressione; tipi selezionabili: CSS, JSON, XML, ecc.

Come testare la compressione

Una volta configurata la compressione gzip per la vostra pagina web, potete utilizzare diversi strumenti online per assicurarvi che il procedimento funzioni come desiderato e che il vostro server web metta a disposizione i contenuti compressi quando richiesti. Il primo strumento raccomandabile per questo è PageSpeed Insights di Google. Una volta indicata la pagina desiderata, il tool analizza automaticamente il contenuto e vi informa successivamente su tutti i punti di forza e sulle debolezze della pagina in questione. Tra le altre informazioni che otterrete vi è anche se la compressione gzip è attiva o meno. In alternativa potete condurre un semplice test relativo a gzip con l’HTTP Compression Test su WhatsMyIP.org.

Cosiglio

È sempre consigliabile condurre test su più pagine di uno stesso progetto web, poiché un test su una singola pagina potrebbe non rilevare degli errori presenti su altre pagine.

Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.