Activer la compression GZip dans IIS6

Note : 9,43/10

12345678910
Auteur : Nix Article lu 8 873 fois

Description : Cet article vous montre comment optimiser les performances de votre serveur web IIS 6.0 en activant la compression GZip.
Grâce à cette option votre server web enverra les pages plus vite aux clients sans perdre en performance (niveau CPU)




La compression de pages ASP .NET dans IIS 6.0 apporte principalement 2 améliorations :

 

  1. Cette manipulation permet d'économiser de la bande passante
  2. Si vos pages sont volumineuses, cela vous permet d'envoyer les pages plus rapidement.


À titre d'exemple, suite à la compression de vos pages ASP .NET dans IIS 6.0, une page de 100 Ko arriva au moins 10 fois plus vite dans le navigateur du visiteur. Les performances du serveur ne sont pas affectées par cette compression à la volée des pages (contrairement à ce que l'on pourrait penser).

Appuyons-nous sur un exemple concret : les sites CodeS-SourceS.

Ces sites web sont très fréquentés (entre 80 et 90 000 visiteurs par jour, 300 000 pages délivrées par jour) et les pages sont assez volumineuses (entre 60 et 120ko selon les pages).

Avant la compression des pages, celles-ci mettaient entre 2 et 3 secondes à s'afficher dans le navigateur du visiteur (alors qu'en local l'affichage était instantané). Je pensais que cela était dû au nombre de visiteurs en simultané sur ces sites, qui faisaient ralentir l'application. Mais depuis que la compression des pages ASP .NET a été activée, les pages ne mettent plus que quelques centièmes de secondes à s'afficher dans le navigateur du visiteur !


En terme de bande passante, l'économie est d'environ 40 à 50%. Il est à noter que cette compression n'a pas d'effet sur les fichiers zip et images jpeg. Par contre, si le site n'a que du HTML alors l'économie peut avoisiner les 75 à 80% !

Pour activer cette compression dans IIS 6.0 :

 

  1. Allez dans le menu démarrer, "Tous les programmes", "Outils d'administration", "Gestionnaire de services Internet (IIS)"

    capture 1

  2. Faites un clic droit sur le dossier Sites Web_Propriétés

    capture 2

  3. Faites un clic droit sur le dossier Sites Web, Propriétés allez dans l'onglet Service

    capture 3

  4. Dans la rubrique "Compression HTTP", cochez les cases "Compresser les fichiers d'application" et "Compresser les fichiers statiques".
    Même si avec cette manipulation la compression sous IIS 6.0 est activée, elle ne permet pas encore de rendre effective la compression pour des pages .aspx (ASP .NET).

  5. Pour activer la compression des pages ASP .NET, il vous faut ouvrir le fichier «C:\WINDOWS\system32\inetsrv\MetaBase.xml» dans le bloc-notes (mise en garde : faites une copie de sauvegarde de ce fichier AVANT TOUTE MODIFICATION. Ce fichier est un fichier sensible pour le bon fonctionnement de votre IIS).

    capture 4

  6. Dans le bloc-notes, recherchez alors la balise XML : <IIsCompressionScheme> comportant l'attribut : Location ="/LM/W3SVC/Filters/Compression/gzip"
    Dans l'attribut "HcScriptFileExtensions", rajoutez "aspx", afin d'obtenir ceci :
    HcScriptFileExtensions = " asp
       Aspx
       Dll
       Exe "

    Je vous recommande également d'activer la compression pour les .css et .js dans "HcFileExtensions", après les tests que j'ai effectués, j'ai encore senti une amélioration supplémentaire !

    capture 5

  7. Redémarrez ensuite les services IIS (dans Démarrer\Exécuter, tapez « iisreset /restart » puis validez). La compression de pages ASP.NET est maintenant activée !



Petite astuce :
Pour tester vous pouvez utiliser le script du site "http://www.pipeboost.com/report.asp" proposant de voir le gain de compression d'une page.


Ci-dessous le rapport de compression généré par ce script :
URL Donwloaded :
http://www.vbfrance.com/
Original File size: 93 881
Compressed File size: 23 845
Original file size reduction: 74.62%
On peut voir que l'économie de la bande passante avoisine les 75% sur la page principale !
 



A Propos de l'auteur

Logo MVP Nicolas SOREL (Nix)Nicolas SOREL (alias Nix) est le responsable et développeur du réseau CodeS-SourceS.com / TechnoS-SourceS.com
CodeS-SourceS a été fondé en 1999 et regroupe désormais près de 800 000 membres francophones passionnés de développement.

Blog de Nix

[ Voir la fiche de Nix ] - [ Voir tous les articles de Nix ] - [ Contacter Nix ] - [ Visiter le site de Nix ]



Mots définissants ce tutorial

Mot(s) associé(s) :

iis compression gzip web aspx




Commentaire(s)

Commentaire de : tontonpolak le 25/07/2006 20:09:48Envoyer un message à tontonpolak
Nix Merci énorme tuyau

J'ai quelques questions car bien évidemment je le mettrais en place :

1 - Le gain est il le meme pour asp 3 ?

2 - Quel est l'inconvenient(ça parait trop beau), tu dis "Les performances du serveur ne sont pas affectées", as tu testé à un moment de rush de visiteurs (augmentation de charge en Ram, activité Processeur augmentée) ?

Pourquoi Microsoft, ou IBM ne l'a pas mis en place ?

(Je veux juste une confirmation car à priori tu l'as adoptés cf :
http://www.pipeboost.com/GetReport.asp?URL=http://www.technos-sources.com)
ou
http://www.pipeboost.com/GetReport.asp?URL=http://www.codes-sources.com)

3 - Peut on rajouter d'autres formats à compresser, au niveau du "HcFileExtensions", comme xml, php ou autre ?

4 - La compression Gzip a t elle un rapport avec le format de compression en licence GNU ?

J'aurais certainement d'autres questions, une fois la joie d'une telle nouvelle passée.

Cordialement

Tontonpolak un fan
Commentaire de : Nix le 26/07/2006 11:55:01Envoyer un message à Nix
1) A priori pour asp cela devrait être le même gain (Cela reste du texte (HTML) en sortie qui est compressé)
2) Pour te faire une idée, c'est activé sur CodeS-SourceS et il y a entre 80 et 90 000 visiteurs par jour en temps normal (aux heures de pointe il y a bcp de monde en même temps) et cela n'affecte pas de façon visible les performances du server web.
Si MS ou IBM n'active pas, c'est un choix, il faudrait leur demander :p
3) Oui tu peux mettre ce que tu veux mais attention, certains formats (comme gif par exemple) sont deja compressés, donc inutile de compresser car cela risquerait même de rendre le débit plus important (Voir mon bench ici http://www.technos-sources.com/tutorial-benchmark-differents-formats-compression-non-exhaustif-2.aspx)
4) Je ne sais pas
Voilà j'espère avoir éclairé ta lanterne ;)
Commentaire de : tontonpolak le 27/07/2006 19:15:01Envoyer un message à tontonpolak
Salut

Je te remercie pour ces précisions

Je testerais pour asp3 et benchmarkant le serveur (d'ailleurs si tu connais un bon benchmarkeur de site Web)

Ma lanterne est éclairée, et quelle lanterne

tontonpolak
Commentaire de : leptidev le 12/12/2007 11:13:23Envoyer un message à leptidev
Salut,

Super tuto mais j'ai une grosse question : comment forcer IIS à gziper toutes les requetes même si le client n'envoit pas le header Accept-Encoding: gzip ???
En fait j'utilise Flex pour attaquer des ws et ce *** n'envoit pas les bons HTTP header (impossible de les ajouter ...) par contre si la réponse est gzipé y a pas de problème, Flex sait faire !

Ajouter un commentaire :

Pour ajouter un commentaire, vous devez vous identifier :
Si vous n'avez pas encore de compte sur un des sites TechnoS-SourceS / CodeS-SourceS cliquez ici pour créer votre compte.

Login et mot de passe que vous avez sur
CodeS-SourceS/TechnoS-SourceS




Mot de passe oublié ? / Activation de compte
Créer un compte