Fondamentalmente, ci sono due moduli disponibili per la compressione dell'otuput: mod_gzip e mod_gunzip. Utilizzano approcci differenti per raggiungere l'obiettivo della riduzione di banda.
Mod_gunzip si aspetta il file compresso sul filesystem e lo decomprime se il browser non può manipolare dati compressi. Il beneficio consiste nell'utilizzo minimo della cpu, poiché la maggior parte dei browser può maneggiare contenuto compresso. Per contro, la maggior parte degli attuali contenuti viene fornita dinamicamente, ad es. PHP, e questi vengono forniti non compressi.
Mod_gzip non necessita dei file compressi sul sistema, tutto il contenuto definito viene compresso prima della consegna. Il beneficio consiste nell'avere compresso anche il contenuto generato dinamicamente, il rovescio della medaglia è un elevato utilizzo della cpu, poiché ogni richiesta deve essere compressa al volo. Mod_gzip può maneggiare dati già compressi, ad es. index.html.gz, e inviarli così come sono.
In conclusione: si deve decidere attentamente quale dei due moduli ha più senso. Se si deve pagare per ogni GB fornito e la potenza della CPU non è importante, allora mod_gzip è la scelta giusta. Se conta il tempo di risposta (ritardo tra la richiesta e la consegna) e la larghezza di banda è economica o illimitata, mod_gunzip corrisponde meglio alle proprie necessità.
Una buona pagina che può aiutare a prendere questa decisone, è il documento su mod_gunzip di Martin Kiff http://www.innerjoin.org/apache-compression/howto.html
Sito di origine: http://prdownloads.sourceforge.net/mod-gzip/mod_gzip-1.3.26.1a.tgz?download
Per compilare con successo mod_gzip è necessario modificare il Makefile e fornire il percorso corretto per apxs
make make install |
Si metta il seguente contenuto nel proprio /usr/local/apache/conf/httpd.conf:
Esempio 5. /usr/local/apache/conf/httpd.conf
mod_gzip_on Yes mod_gzip_can_negotiate Yes mod_gzip_dechunk Yes mod_gzip_minimum_file_size 600 mod_gzip_maximum_file_size 0 mod_gzip_maximum_inmem_size 100000 mod_gzip_keep_workfiles No mod_gzip_temp_dir /usr/local/apache/gzip mod_gzip_item_include file \.html$ mod_gzip_item_include file \.txt$ mod_gzip_item_include file \.jsp$ mod_gzip_item_include file \.php$ mod_gzip_item_include file \.pl$ mod_gzip_item_include mime ^text/.* mod_gzip_item_include mime ^application/x-httpd-php mod_gzip_item_include mime ^httpd/unix-directory$ mod_gzip_item_include handler ^perl-script$ mod_gzip_item_include handler ^server-status$ mod_gzip_item_include handler ^server-info$ mod_gzip_item_exclude file \.css$ mod_gzip_item_exclude file \.js$ mod_gzip_item_exclude mime ^image/.* |
Si potrebbe voler loggare il risultato della compressione nell'access log. Questo può essere ottenuto cambiando la direttiva LogFormat su /usr/local/apache/conf/httpd.conf
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" mod_gzip: %{mod_gzip_compression_ratio}npct." combined |
Sito di origine: http://www.oldach.net/mod_gunzip.tar.gz
tar -xvzf mod_gunzip.tar.gz cd mod_gunzip-2 /usr/local/apache/bin/apxs -i -a -c -lz mod_gunzip.c |
Inserire il seguente contenuto nel proprio /usr/local/apache/conf/httpd.conf:
Esempio 6. /usr/local/apache/conf/httpd.conf
AddType text/html .htmz AddHandler send-gunzipped .htmz |
Ora si possono comprimere i propri file html e rinominarli ad es. in:
gzip index.html mv index.html.gz index.htmz |
Naturalmente bisogna modificare tutti i link a htmz, ad es. <a href="pagina.htmz">Qualche pagina</a>