PRATIQUE OUTILS 
Apache et IIS : mettre en place la compression gzip
 
Comment économisez de la bande passante et éviter la frustration de vos utilisateurs pressés en installant une extension de compression pour vos pages statiques et dynamiques. La méthode pas à pas pour les deux principaux serveurs Web. (07/12/2006)
  Forum

Réagissez dans les forums de JDN Développeurs

La bande passante reste l'un des soucis premiers de la gestion de la production d'un site Web - et la nécessité de l'optimiser sans doute l'un des meilleurs arguments des CSS face aux mises en page en tableaux HTML. Il existe heureusement une méthode reconnue de tous les navigateurs et systèmes pour réduire drastiquement cet usage de bande passante : la compression Zip à la volée des données envoyées, décompressées par le navigateur et affichées sans perte.

Compresser les pages à la volée requiert un usage supérieur à la normale du processeur de la machine serveur, mais celui-ci étant autrement largement inactif, ce coût d'exploitation reste bien moindre que celui de la bande passante mensuelle. Le protocole utilisé est nommé gzip.

Le marché des serveurs Web est assez limité : 32% utilisent IIS, le serveur Microsoft, et 62% utilisent Apache, le serveur Open Source. Les quelques points restants sont partagés entre des serveurs beaucoup plus confidentiels, comme celui de Sun, Zeus ou lighthttpd. Nous ne présenterons donc la méthode que pour les deux leaders.

Côté navigateurs, on peut spéculer que 99% des navigateurs en circulation sont capables de décoder du contenu gzippé. L'en-tête de tels contenus est Content-Encoding: gzip, et est accepté par le moteur Gecko (Mozilla, Firefox) depuis Netscape 6, Internet Explorer depuis la version 5 (avec quelques soucis répertoriés), Opera depuis sa version 5... En gros, tous les navigateurs de ce millénaire reconnaîssent le protocole HTTP 1.1, donc Content-Encoding.
Dans tous les cas, l'installation du module Gzip ne pose pas de problème, car il ne compresse les données que si le navigateur affiche une en-tête Accept-Encoding: gzip, deflate.

Pour Apache
Mettre en place la compression gzip sous Apache 2.0 est extrêmement simple, grâce au système de modules du serveur, mais ce n'est pas le cas pour Apache 1.3. Ainsi, il suffit de télécharger mod_gzip ou mod_deflate pour Apache 1.3+ (pour Apache 2.x, mod_deflate est directement inclus dans la distribution).

Apache2 ne requiert que l'activation du module : a2enmod deflate, puis redémarrage (accessoirement, ajouter à la section LoadModule à httpd.ini : LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so).

Apache 1.3/mod_gzip requièrent plus qu'un simple ajout dans httpd.ini : il faut prendre en compte la méthode d'intégration de modules utilisée par Apache. Pour une intégration statique, il faudra ajouter le code de mod_gzip à celui d'Apache, puis recompiler le tout. Nous ne parlerons pas de cette méthode ici.

Pour une intégration dynamique, il faudra télécharger ou compiler l'objet partagé (mod_gzip.so) de ce module, l'installer dans le bon dossier, et modifier httpd.ini pour le prendre en compte. Des objets partagés précompilés sont disponibles pour Windows, FreeBDS et Solaris. La modification de httpd.ini consiste en un appel LoadModule : LoadModule gzip_module modules/ApacheModuleGzip.dll pour le SO Windows, LoadModule gzip_module modules/mod_gzip.so pour les autres.

Pour IIS
La situation avec IIS est également contrastée, car hors IIS6+, point de salut : IIS5 ne reconnaissait pas par défaut la compression gzip, et il fallait acquérir une extension tierce. Avec IIS6, il suffit de savoir trouver le bon paramètre, et de l'activer.

Le chemin à parcourir est le suivant : dans IIS Manager, ouvrez l'ordinateur local, ouvrez le menu contextuel pour le dossier Sites Web, et choisissez Propriétés. Allez dans l'onglet Service, et dans la section Compression HTTP, sélectionnez Compresser les fichiers d'application, ainsi que Compresser les fichiers statiques.

Vous pouvez ensuite choisir le dossier où seront conservés les fichiers compressés, et sa taille maximale au besoin. Validez : c'est fait, gzip.dll prendra désormais en charge vos fichiers IIS.

Mais encore faut-il indiquer ce dernier à IIS. Ouvrez le menu contextuel de la section Extension du service Web, et sélectionnez Ajouter une nouvelle extension de service Web.... Dans la fenêtre qui s'ouvre, donnez un nom à l'extension ("Compression Gzip"), et entrez le chemin vers gzip (normalement, C:\WINDOWS\system32\inetsrv\gzip.dll). Validez, c'est terminé.

 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page