Il modulo DEFLATE di Apache
Pagina 1 di 2
1. Introduzione al modulo Deflate
Tra i numerosi moduli disponibili per il Web Server Apache può essere interessante approfondire DEFLATE il cui scopo è quello di comprimere gli output prima che vengano inviati al client come risposta alle richieste; questa procedura consente in alcuni casi un notevole risparmio sulla banda disponibile per la connessione, non a caso "to deflate" in lingua Inglese significa "sgonfiare".
La compressione attuata da questo modulo è consentita grazie all'azione di un apposita procedura di filtraggio degli output che può essere attivata in seguito all'uso della direttiva SetOutputFilter con una sintassi del genere:
SetOutputFilter DEFLATENaturalmente può essere necessario dover attivare la compressione soltanto per alcune tipologie di file, per far questo abbiamo a disposizione un'altra direttiva, chiamata AddOutputFilterByType che accetta come parametro un determinato tipo MIME.
Nell'esempio che segue vedremo come imporre la compressione del modulo DEFLATE soltanto ai file HTML contenuti all'interno di una determinata cartella:
<Directory "/root-del-server/nome-cartella"> AddOutputFilterByType DEFLATE text/html </Directory>La compressione degli output avviene utilizzando l'algoritmo Gzip, quest'ultimo però può non essere gestito nel modo migliore dai vari browser esistenti; in taluni casi è bene quindi introdurre una nuova direttiva, BrowserMatch, attraverso la quale intercettare il tipo di browser utilizzato dal client e disabilitare il filtro di DEFLATE grazie all'argomento no-gzip o all'istruzione gzip-only-text/html.
"no-gzip" esclude l'attività di compressione per il browser indicato nel container (gruppo di istruzioni in httpd.conf, file di configurazione di Apache), "gzip-only-text/html" è invece un'istruzione più raffinata in quanto permette l'azione del filtro di DEFLATE soltanto per i tipi MIME indicati.
Facciamo un esempio:
# abilitiamo la compressione soltanto per certi # tipi MIME nei browser Netscape 4.x BrowserMatch ^Mozilla/4 gzip-only-text/html # disabilitiamo la compressione per la versione 4.06-4.08 BrowserMatch ^Mozilla/4\.0[678] no-gzip # abilitiamo la compressione per i browser # Internet Explorer "mascherati" da Netscape BrowserMatch \bMSIE !no-gzip !gzip-only-text/htmlCome è possibile notare, DEFLATE è un modulo particolarmente flessibile che ben si adatta alle diverse situazioni che devono essere gestite dal Web Server; è bene però sapere che la compressione viene operata prima dell'invio dell'output e dopo la sua produzione, quindi il modulo non avrà effetto sul funzionamento di eventuali applicazioni Server Side.
Naturalmente, oltre alle direttive per la compressione degli output, DEFLATE offre anche istruzioni per la decompressione degli input, in questo modo la banda potrà essere risparmiata in entrambe le direzioni di trasmissione.
La direttiva principale per la decompressione è SetInputFilter che può essere specificata in questo modo:
<Location /percorso> SetInputFilter DEFLATE </Location>L'istruzione indicata agirà, se la compressione delle richieste è supportata dal client, su tutti quei documenti che presenteranno tra gli altri headers l'intestazione
Content-Encoding: gzipche indica la trasmissione di un documento compresso.







