Testez les performances de votre site

 
Catégories du blog

Compresser vos pages avec Gzip

Le mardi 30 mars 2010 dans Performances web et Tutoriel - Aucun commentaire

Premier article d'une longue série de tutoriels qui vous permettront d'améliorer les performances de vos pages web. Nous commençons aujourd'hui par activer la compression Gzip dans PHP, Apache ou IIS.

Tous les navigateurs récents sont capables de gérer des réponses HTTP compressées par les formats Gzip et Deflate. Pour le vérifier, vous pouvez regarder les entêtes de vos requêtes HTTP de votre navigateur préféré. Dans la majorité des cas, vous retrouverez cette ligne d'instruction :

GET /index.html
HTTP/1.1
Host: www.ndd.com   
Accept-Encoding: gzip,deflate   
...

Si la compression est activée, le serveur pourra donc renvoyer des composants compressés :

HTTP/1.1 200 OK   
Content-Type: text/html; charset=ISO-8859-1   
Content-Encoding: gzip   
...

Gzip est le format de compression le plus populaire et il permet de réduire en moyenne de 70% la taille d'un composant. Certains éléments de votre site, tels que les images, sont la plupart du temps déjà compressés. C'est donc une perte de temps et de ressources de les compresser à nouveau. Il est donc judicieux de sélectionner quels types de données vous devez compresser.

Après compression d'une page de test faisant 16ko, la page est réduite à 4,9ko, soit 69,4% de gain sur la taille du fichier!
Un test de compression sur une photo Jpeg de 2,7mo réduit la taille à 2,6mo, doit 100ko de gain (4%), ce qui démontre que la compression n'est pas efficace sur une photo.

Activer la compression Gzip sur un script PHP

Pour indiquer à PHP que vous souhaitez compresser les données renvoyées par votre script, ajoutez cette ligne de code au début de votre page :

<?php
ob_start('ob_gzhandler');
?>

Cette instruction nécessite que l'extension Zlib soit configurée.

Pour configurer globalement PHP et activer la compression sur toutes les pages, vous pouvez modifier la configuration zlib.output_compression = 1 dans le fichier php.ini.
Notez que les deux configurations ne peuvent pas fonctionner en même temps.

Activer la compression Gzip ou Deflate sur un serveur Apache 2.0

Le module mod_deflate est inclus par défaut lors de l'installation du serveur Apache 2.0. Pour l'activer, lancez la commande suivante dans votre terminal :

a2enmod deflate

Si vous n'êtes pas sous un environnement Unix ou si vous souhaitez activer le module par une instruction de configuration, ajoutez la ligne suivante au fichier httpd.conf :

LoadModule deflate_module modules/mod_deflate.so

Vous aurez aussi besoin des modules mod_headers et mod_setenvif pour que la compression soit effective :

a2enmod headers
a2enmod setenvif

ou

LoadModule headers_module modules/mod_headers.so
LoadModule setenvif_module modules/mod_setenvif.so

Une fois les modules installés, ajouter ces deux lignes dans le fichier httpd.conf pour demander à Apache de compresser les pages et de ne pas toucher aux images :

SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

Puis redémarrez le serveur à l'aide de :

/etc/init.rd/apache force-reload

Activer la compression Gzip sur un serveur IIS 7.0

Avant de mettre en place la compression, vérifiez que les composants "Compression de contenu dynamique" et "Compression de contenu statique" sont installés dans les fonctionnalités de IIS :

Fonctionnalités de compression dans IIS

Une fois ces composants requis installés, rendez-vous dans le Gestionnaire des services Internet et cliquez sur le Serveur. Choisissez la fonctionnalité "Compression" et vous aurez accès aux paramètres de configuration de la compression statique et dynamique :

Configuration de la compression dans IIS

Vous pouvez activer cette configuration globalement (via la méthode décrite ci-dessus) ou pour chaque site en cliquant sur les fonctionnalités du site.

Microsoft conseille de surveiller les temps d'utilisation du CPU avant et après l'activation de la compression. Si votre processeur dépassait déjà 80% d'utilisation, cette fonctionnalité risque de surcharger votre serveur et essayez plutôt de n'activer que la compression statique.

Par défaut, la compression statique s'applique aux fichiers dont l'extension est .txt, .html et .html. La compression dynamique s'applique aux fichiers dont l'extension est .exe, .dll et .asp. Cette configuration peut être modifiée en éditant la Metabase d'IIS.

Ajoutez un commentaire :
Anti spam