Ricerca nel sito web

Come risparmiare traffico con mod_deflate di Apache2


In questa pagina

  1. 1 Abilita mod_deflate
  2. 2 Configurare mod_deflate

    1. 2.1 Inclusione esplicita di file per tipo MIME
    2. 2.2 Esclusione esplicita di file per estensione
    3. 2.3 Ulteriori direttive di configurazione
    4. 3 Prove
  3. 4 collegamenti

In questo tutorial descriverò come installare e configurare mod_deflate su un server web Apache2. mod_deflate consente ad Apache2 di comprimere file e consegnarli a client (ad esempio browser) in grado di gestire contenuti compressi come fanno la maggior parte dei browser moderni. Con mod_deflate puoi comprimere file HTML, testo o XML in ca. 20 - 30% delle loro dimensioni originali, risparmiando così il traffico del server e rendendo più felici gli utenti del modem.

La compressione dei file comporta un carico leggermente maggiore sul server, ma secondo la mia esperienza questo è compensato dal fatto che i tempi di connessione dei client al server diminuiscono notevolmente. Ad esempio, un utente modem che impiegava sette secondi per scaricare un file HTML non compresso potrebbe ora impiegare solo due secondi per lo stesso file compresso.

Usando mod_deflate non devi aver paura di escludere gli utenti con browser più vecchi che non possono gestire contenuti compressi. Il browser negozia con il server prima che qualsiasi file venga trasferito e, se il browser non è in grado di gestire il contenuto compresso, il server consegna i file non compressi.

mod_deflate ha sostituito mod_gzip di Apache 1.3 in Apache2. Se vuoi servire file compressi con Apache 1.3, dai un'occhiata a questo tutorial: mod_gzip - servire contenuto compresso dal server web Apache

Desidero innanzitutto dire che questo non è l'unico modo per istituire un sistema del genere. Esistono molti modi per raggiungere questo obiettivo, ma questo è il modo in cui lo scelgo. Non fornisco alcuna garanzia che funzionerà per te!

1 Abilita mod_deflate

Se hai installato Apache2, anche mod_deflate dovrebbe essere già installato sul tuo sistema. Ora dobbiamo abilitarlo. Su Debian, possiamo farlo in questo modo:

a2enmod deflate

Quindi riavvia Apache2:

service apache2 restart

Su altre distribuzioni, potresti dover modificare manualmente la configurazione di Apache2 per abilitare mod_deflate. Potrebbe essere necessario aggiungere una riga come questa alla sezione LoadModule:

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

Assicurati di modificare il percorso su mod_deflate.so e riavviare Apache2 in seguito.

2 Configurare mod_deflate

La compressione dei file può essere configurata in due modi: esclusione esplicita di file per estensione o inclusione esplicita di file per tipo MIME. Puoi abilitare mod_deflate per l'intero server Apache2 o solo per siti virtuali specifici. A seconda di ciò, apri ora la sezione di configurazione del server globale di Apache2 o solo la sezione di configurazione di vhost in cui desideri abilitare mod_deflate.

2.1 Inclusione esplicita di file per tipo MIME

Se desideri comprimere solo file HTML, testo e XML, aggiungi questa riga alla tua configurazione:

AddOutputFilterByType DEFLATE text/html text/plain text/xml

Questa è la configurazione che sto utilizzando perché non voglio comprimere immagini o file PDF o file già compressi come i file zip.

2.2 Esclusione esplicita di file per estensione

Se vuoi comprimere tutti i tipi di file ed escluderne solo alcuni, dovresti aggiungere qualcosa di simile alla tua configurazione (invece della riga della sezione 2.1):

SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ \
    no-gzip dont-vary
SetEnvIfNoCase Request_URI \
    \.(?:exe|t?gz|zip|bz2|sit|rar)$ \
    no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary

Ciò comprimerebbe tutti i file tranne le immagini (gif, jpg e png), i file già compressi (come zip e tar.gz) e i file PDF, il che ha senso perché non si guadagna molto comprimendo questi tipi di file.

2.3 Ulteriori direttive di configurazione

Indipendentemente dal fatto che utilizzi la configurazione della sezione 2.1 o 2.2, dovresti aggiungere queste righe alla tua configurazione:

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

Queste righe riguardano alcuni browser meno recenti che non supportano la compressione di file diversi dai documenti HTML.

La configurazione è ora terminata e ora è necessario riavviare Apache2. Su Debian, fai così:

service apache2 restart

Per conoscere ulteriori direttive di configurazione, dai un'occhiata al modulo Apache mod_deflate.

3 Prove

Per testare la nostra compressione, aggiungiamo alcune direttive alla nostra configurazione mod_deflate che registrano il rapporto di compressione dei file consegnati. Apri la configurazione mod_deflate e aggiungi le seguenti righe:

DeflateFilterNote Input input_info
DeflateFilterNote Output output_info
DeflateFilterNote Ratio ratio_info
LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate
CustomLog /var/log/apache2/deflate_log deflate

Assicurati di sostituire /var/log/apache2 con la directory dei log di Apache2. Potrebbe essere /var/log/httpd, /var/log/httpd2, ecc.

Quindi riavvia Apache2. Su Debian, procedi in questo modo:

service apache2 restart

Ora ogni volta che viene richiesto un file, questo verrà registrato in /var/log/apache2/deflate_log (o in qualsiasi file in cui lo hai modificato). Una tipica riga di registro è simile alla seguente:

"GET /info.php HTTP/1.1" 7621/45430 (16%)

Vedi che il file info.php è stato richiesto e consegnato. La sua dimensione originale era 45430 byte ed è stata compressa a 7621 byte o al 16% della sua dimensione originale! Questo è un ottimo risultato e se il tuo sito web è costituito principalmente da file HTML, testo e XML, mod_deflate ti farà risparmiare molto traffico e, per gli utenti con una connessione a larghezza di banda ridotta, il tuo sito verrà caricato molto più velocemente.

Se non hai più bisogno della registrazione dopo i test, puoi annullare le modifiche dalla sezione 3 e riavviare Apache2.

4 collegamenti

  • Modulo Apache mod_deflate: http://httpd.apache.org/docs/2.0/mod/mod_deflate.html
  • mod_gzip - fornisce contenuti compressi dal server web Apache: https://linux-console.net/linux_apache_mod_gzip

Articoli correlati: