Risparmiare banda con il modulo Deflate di Apache

12 dicembre 2006

La configurazione dettagliata dei parametri

Per configurare finemente il nostro mod_deflate (dopo aver deciso i file su cui applicare la compressione) possiamo intervenire su quattro parametri diversi:

  • DeflateBufferSize: specifica la quantità di memoria occupata da ogni frammento da comprimere. Il valore di default (quello specificato più avanti) va più che bene.
  • DeflateCompressionLevel: un valore da 1 a 9 che specifica il livello di compressione. Più è alto questo livello maggiore sarà la compressione ma al tempo stesso maggiore sarà l’uso delle risorse di sistema. Per sistemi potenti e con un numero non eccessivo di visitatori si può impostare al massimo.
  • DeflateMemLevel: un valore compreso tra 1 e 9 indica quanto spazio in Ram occupare per la compressione. Il valore di default di 9 è ottimo a meno di un numero molto alto di richieste al server che comunque andrà a incidere prima su altri parametri.
  • DeflateWindowSize: un valore compreso tra 1 e 15 indica un altro tipo di livello di compressione. Anche qui il valore di default di 15 (maggiore compressione) è perfetto.

I possibili problemi

Come abbiamo già visto talvolta la compressione di contenuti non testuali genera problemi ad alcuni client causando nella migliore delle ipotesi una errata visualizzazione del contenuto e nella peggiore delle ipotesi un crash. Se consideriamo poi come questa compressione non porti alcun vantaggio dal punto di vista del risparmio di banda e come possa occupare molte risorse di sistema per via della dimensione dei file non testuali possiamo ben capire come non convengo attivare il mod_deflate per questi file. Per fortuna abbiamo la possibilità di specificare i mime/type dei file su cui applicare la compressione per evitare di agire inutilmente: a questo proposito faremo in modo da far comprimere unicamente i file di tipo testuale.

Problema diverso è invece quello riscontrato con i file PDF compressi inviati ad Internet Explorer 5.5 e 6.0 con plugin Adobe per la lettura. In questo caso infatti è possibile che il sistema vada in crash. A questo proposito faremo in modo da non permettere ai file PDF di essere compressi da Apache.

È necessario inoltre tener presente che alcuni browser potrebbero dichiararsi capaci di gestire questi contenuti non essendolo realmente. Anche in questo caso possiamo avvalerci di altri moduli di Apache per modulare il file di configurazione in modo che li riconosca. Per ultimo bisogna far attenzione ad eventuali proxy attraverso cui possono transitare i dati e che potrebbero alterare gli header rendendo la fruizione reale dei contenuti diversa da quella attesa.

La configurazione definitiva

In definitiva un file di configurazione di questo tipo è perfetto per l’uso generico e permette di non avere problemi con la quasi totalità degli utenti.

<IfModule mod_deflate.c>
    # Specifico i file su cui applicare la compressione
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE text/css

    # Elimino eventuali problemi derivanti dai browser
    # con problemi di gestione
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

    # Specifico espressamente i vari livelli di compressione
    DeflateCompressionLevel 9 
    DeflateMemLevel 9 
    DeflateWindowSize 15 
    DeflateBufferSize 8096 

    # Mi assicuro che i proxy non creino problemi
    Header append Vary User-Agent env=!dont-vary 

    # Creo il file di log contenente il tasso di compressione
    DeflateFilterNote ratio 
    LogFormat "%v %h %l %u %t \"%r\" %>s %b mod_deflate: %{deflate_ratio}n pct." deflate_vhost 
    CustomLog logs/deflate.log deflate_vhost 
</IfModule>

Installate questo modulo sul vostro server di produzione e vedrete veramente crollare l’impiego di banda. Considerando il caching delle immagini attuato dai browser moderni infatti il traffico dovuto ai file testuali (prevalentemente HTML) acquista un peso relativo decisamente rilevante nel complesso dei file trasferiti.

Se vuoi aggiornamenti su Risparmiare banda con il modulo Deflate di Apache inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su Risparmiare banda con il modulo Deflate di Apache

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy