# 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](https://www.ionos.it/digitalguide/server/know-how/estensione-di-file-tar/) al fine di creare i cosiddetti [archivi tarball](https://www.ionos.it/digitalguide/server/tools-o-strumenti/backup-con-tar/), 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:

```bash
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 seguente per creare una versione compressa del file di testo `esempio.txt`.

```bash
gzip 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:

<table>
  <thead>
    <tr>
      <th>Opzione</th>
      <th>Descrizione</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`-1` … `-9`</td>
      <td>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`</td>
    </tr>
    <tr>
      <td>`-r`</td>
      <td>Ricerca ricorsivamente la cartella (incluse tutte le sottocartelle) e comprime o decomprime tutti i file contenuti al suo interno</td>
    </tr>
    <tr>
      <td>`-f`</td>
      <td>Forza la compressione gzip e sovrascrive, in caso sia necessario, i file già presenti con lo stesso nome</td>
    </tr>
    <tr>
      <td>`-d`</td>
      <td>Decomprime i file selezionati nella cartella attuale</td>
    </tr>
    <tr>
      <td>`-k`</td>
      <td>Impedisce la cancellazione del file originale</td>
    </tr>
    <tr>
      <td>`-l`</td>
      <td>Mostra le informazioni dei file, come ad esempio il grado di compressione</td>
    </tr>
    <tr>
      <td>`-c`</td>
      <td>Crea un file compresso per uno standard output, di solito lo schermo di un PC, connesso alla riga di comando</td>
    </tr>
    <tr>
      <td>`-q`</td>
      <td>Disattiva completamente le comunicazioni da parte del programma gzip</td>
    </tr>
    <tr>
      <td>`-t`</td>
      <td>Testa l’integrità del file compresso</td>
    </tr>
    <tr>
      <td>`-h`</td>
      <td>Elenca tutte le opzioni disponibili</td>
    </tr>
  </tbody>
</table>

## 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](https://www.gzip.org/ "gzip.org: il sito web ufficiale del programma di compressione") 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](https://www.ionos.it/digitalguide/server/know-how/cose-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](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/ottimizzazione-consigli-e-trucchi-per-un-sito-piu-veloce/).

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](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/trucchi-per-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:

```txt
<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` 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
<?php
ob_start("ob_gzhandler");
?>
```

### Opzione 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](https://www.ionos.it/digitalguide/hosting/blog/che-cose-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](https://wordpress.org/plugins/w3-total-cache/ "W3 Total Cache: ottimizzazione della performance web per i progetti WordPress")**: 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](https://wp-rocket.me/ "Sito di WP Rocket")**: WP Rocket è anche un classico [plugin di caching per WordPress](https://www.ionos.it/digitalguide/hosting/blog/wordpress-plug-in-di-caching/). 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](https://wordpress.org/plugins/wp-performance-score-booster/ "WordPress.org: download di 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](https://www.ionos.it/digitalguide/server/configurazione/nginx-basi-installazione-e-configurazione/) 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.

<table>
  <thead>
    <tr>
      <th>Direttiva</th>
      <th>Sintassi</th>
      <th>Impostazione standard</th>
      <th>Descrizione</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`gzip_buffers`</td>
      <td>`gzip_buffers Dimensione desiderata;`</td>
      <td>`gzip\_buffers 32 4k </td><td>16 8k;`</td>
    </tr>
    <tr>
      <td>`gzip_comp_level`</td>
      <td>`gzip_comp_level Grado di compressione;`</td>
      <td>`gzip_comp_level 1;`</td>
      <td>Determina il grado di compressione; valori selezionabili: 1-9</td>
    </tr>
    <tr>
      <td>`gzip_min_length`</td>
      <td>`gzip_min_length Lunghezza minima;`</td>
      <td>`gzip_min_length 20;`</td>
      <td>Determina la lunghezza minima in byte del file compresso</td>
    </tr>
    <tr>
      <td>`gzip_http_version`</td>
      <td>`gzip_http_version Numero della versione;`</td>
      <td>`gzip_http_version 1.1;`</td>
      <td>Determina con quale versione HTTP viene risposta una richiesta compressa</td>
    </tr>
    <tr>
      <td>`gzip_types`</td>
      <td>`gzip_types Tipo di contenuto;`</td>
      <td>`gzip_types text/html;`</td>
      <td>Regola per quale tipo di contenuto deve valere la compressione; tipi selezionabili: CSS, JSON, XML, ecc.</td>
    </tr>
  </tbody>
</table>

## 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](https://www.ionos.it/digitalguide/online-marketing/marketing-sui-motori-di-ricerca/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](https://www.whatsmyip.org/http-compression-test/ "whatsmyip.org: test per la compressione HTTP").


This is a markdown version of: [https://www.ionos.it/digitalguide/server/know-how/che-cose-gzip-e-che-vantaggi-offre/](https://www.ionos.it/digitalguide/server/know-how/che-cose-gzip-e-che-vantaggi-offre/) for AI/LLM consumption.