Compression

Deux modules sont disponibles pour compresser les données: mod_gzip et mod_gunzip. Ils utilisent des approches différentes afin de limiter l'utilisation de bande passante.

mod_gunzip prend un fichier compressé et le décompresse is le navigateur ne sait pas recevoir des données compressées. L'avantage est de limiter la charge CPU car la plupart des navigateurs gèrent bien les données compressées. D'un autre côté, la plupart des contenus sont aujourd'hui générés dynamiquement (ex: PHP) et ces contenus ne sont pas compressés.

mod_gzip ne travaille pas à partir de fichiers déjà compressés. Toutes les données seront compressées avant d'être envoyées au navigateur. L'avantage est de compresser tous les contenus dynamiques, mais en contre-partie, cela génére un forte charge CPU afin de compresser toutes les données à la volée. mod_gzip sait gérer des fichiers déjà compressés (par ex: le fichier index.html.gz serait envoyé en l'état).

Conclusion: vous devez choisir avec la plus grande précaution le module de compression. Si vous payez la bande passante et que la puissante CPU est moins importante, mod_gzip est le bon choix. Si les temps de réponses (délai de traitement des requêtes) est important et que la bande passante est peu chère, mod_gunzip est mieux.

La page web suivante peut vous aider à prendre la bonne décision. C'est un document de Martin Kiff sur mod_gunzip http://www.innerjoin.org/apache-compression/howto.html

mod_gzip

Compilation et installation

/usr/local/apache/bin/apxs -i -a -c -lz mod_gzip.c

Exemple de configuration

Mettre ce qui suit dans /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/.*

mod_gunzip

Compilation et installation

tar -xvzf mod_gunzip.tar.gz
cd mod_gunzip-2

/usr/local/apache/bin/apxs -i -a -c -lz mod_gunzip.c

Exemple de configuration

Mettre ce qui suit dans /usr/local/apache/conf/httpd.conf:

AddType text/html .htmz
AddHandler send-gunzipped .htmz

Maintenant vous pouvez utiliser gzip sur vos fichiers html et les renommer, c'est à dire :

gzip index.html
mv index.html.gz index.htmz

Bien entendu, vous devrez modifier tous vos liens html vers des htmz, c'est à dire <a href="page.htmz">Une page</a>