Cos’è gzip e come si utilizza lo strumento?
Il software di compressione dei dati gzip può essere utilizzato su tutte le piattaforme ed è particolarmente apprezzato come soluzione di compressione nello sviluppo web e nei progetti web. Il programma può essere facilmente attivato e gestito tramite il rispettivo strumento a riga di comando per risparmiare spazio di archiviazione e migliorare le prestazioni del sistema.
Come funziona gzip?
Il programma gzip, che è la forma abbreviata di “GNU zip”, si basa sull’algoritmo Deflate, utilizzabile liberamente e che combina il processo di compressione dei dati LZ77 (Lempel-Ziv 77) e la codifica di Huffman. Proprio con l’aiuto di queste tecniche gzip scansiona i file in cerca di stringhe di dati doppie. 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 anche un programma di compressione tar al fine di creare i cosiddetti archivi tarball, con estensioni .tar.gz o .tgz. Di norma il file di output viene eliminato in seguito alla compressione tramite gzip (con applicazione diretta su un file). 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.
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, è sempre possibile. 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 si presenta generalmente in questo modo:
gzip opzioni file
bashL’immissione di opzioni non è in alcun modo obbligatoria. Lasciando il campo vuoto, gzip farà riferimento alle impostazioni standard. Dunque basterà il semplice comando seguente per creare una versione compressa del file di testo esempio.txt
.
gzip esempio.txt
bashSuccessivamente, 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 |
Casi di utilizzo per la compressione gzip
Il programma gzip è oggi utilizzabile su quasi ogni piattaforma e ampliabile a piacere, fin quando la licenza GPL scelta per il progetto venga rispettata. Sui sistemi Linux questo strumento per la compressione dei dati è solitamente installato automaticamente o è contenuto nel sistema di gestione dei pacchetti, pronto per essere installato.
Sul sito ufficiale di gzip ci sono anche versioni per macOS e Windows. Per risparmiare spazio, puoi utilizzare il software in qualsiasi momento su questi sistemi.
Un altro campo di utilizzo è il web: da anni i server web come Apache dominano e i browser moderni sono in grado di interpretare i file compressi e di decomprimerli durante il rendering dei siti web. Qui gzip dà il meglio di sé: una volta attivato il processo, il server web inizia automaticamente la compressione degli elementi caricati nello spazio web e degli elementi dinamici del sito web. In questo modo il tempo di caricamento del sito web sarà considerevolmente inferiore nell’ottica di un’ottimizzazione di base del sito.
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 prestazioni, che va a influire positivamente anche sul ranking dei motori di ricerca.
Come attivare la compressione gzip su Apache
I server web offrono generalmente un procedimento di compressione gzip sotto forma di un modulo che deve essere semplicemente attivato. Oggigiorno, a differenza di com’era in passato, molti provider offrono questa funzione gratuitamente. Se non sei certo se il tuo provider offra o meno la compressione con gzip, puoi contattarlo direttamente o in alternativa eseguire un’interrogazione manuale.
Nel caso in cui si tratti di un server web Apache, verifica le impostazioni del modulo tramite la funzione phpinfo()
. Aggiungendo la voce HTTP_ACCEPT_ENCODING
scoprirai se e quali metodi di compressione hai a disposizione.
Nel caso in cui gzip sia disponibile, hai tre diverse opzioni per utilizzare il software di compressione per i tuoi fini.
Opzione 1: attivare la compressione gzip dal file .htaccess
Tramite il file .htaccess puoi utilizzare delle impostazioni specifiche per le cartelle e configurare così il tuo 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. 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, attiva la compressione gzip tramite il modulo per l’algoritmo deflate (mod_deflate
) e inserisci il seguente codice nel file:
<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>
txtAnche per i moduli mod_gzip
e mod_deflate
hai bisogno dell’abilitazione da parte del tuo provider.
Opzione 2: attivare la compressione gzip tramite PHP
È possibile attivare il processo di compressione gzip grazie a un semplice comando PHP. Lo svantaggio risiede però nel fatto che il codice va inserito singolarmente in ogni documento PHP. Ti conviene procedere in questo modo solo se non disponi dell’accesso necessario per potere elaborare il file .htaccess. La riga di codice che dovrai inserire all’inizio del file in questione è la seguente:
<?php
ob_start("ob_gzhandler");
?>
phpOpzione 3: implementare gzip tramite plugin
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 plugin per il CMS da te utilizzato. Puoi trovare queste utili espansioni, integrabili in pochi minuti e adattabili secondo le tue esigenze, soprattutto per i CMS come WordPress, basati sul linguaggio di scripting PHP. Il seguente elenco contiene tre dei plugin più amati per questo software per i blog:
- W3 Total Cache: il plugin per WordPress W3 Total Cache offre un miglioramento notevole delle prestazioni del tuo sito web. Oltre a diversi meccanismi di caching e a un supporto specifico per dispositivi mobili, questa suite per la SEO e per l’usabilità fornisce anche opzioni per attivare la compressione gzip.
- WP Rocket: WP Rocket è anche un classico plugin di caching per WordPress. L’estensione è facile da usare e attiva fin dall’inizio tutte le funzioni importanti per l’ottimizzazione della velocità, compresa la compressione gzip.
- WP Performance Score Booster: l’estensione WP Performance Score Booster può già contare su oltre 10.000 installazioni attive. Con l’aiuto di questo plugin attivi gzip senza grosse difficoltà e riuscirai a comprimere efficacemente i contenuti del tuo progetto web come testi, HTML, JavaScript, CSS, XML e simili.
Configurare gzip sul tuo server web NGINX: istruzioni
Se utilizzi un server web NGINX per mettere online dei contenuti sul tuo sito web, hai la possibilità di utilizzare gzip per ridurre i tempi di caricamento del tuo progetto. A questo scopo devi solo configurare correttamente il modulo ngx_http_gzip_module
. Di regola la direttiva gzip
, tramite la quale attivi e disattivi il servizio di compressione, è disabilitata.
Per modificare questa impostazione, apri il file di configurazione principale nginx.conf
, cerca la direttiva gzip
e sostituisci successivamente gzip off
in gzip on
. Grazie alla seguente tabella puoi 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;` |
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 compressa |
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 gzip
Una volta configurata la compressione gzip per la tua pagina web, puoi utilizzare diversi strumenti online per assicurarti che il procedimento funzioni come desiderato e che il tuo 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, lo strumento analizza automaticamente il contenuto e ti informa successivamente su tutti i punti di forza e sulle debolezze della pagina in questione. Scoprirai tra l’altro anche se la compressione gzip è attiva o meno. In alternativa, puoi condurre un semplice test relativo a gzip con l’HTTP Compression Test su WhatsMyIP.org.