Question

Dans un article précédent sur l'amélioration des performances de mes sites, j'ai étudié la compression HTTP. J'ai lu des informations sur son installation dans IIS, mais il semble que ce soit un problème global pour tous les pools d'applications IIS. Je ne suis peut-être pas autorisé à le faire car un autre site est également exécuté. J'ai ensuite vu du code à mettre dans Global.asax pour obtenir la même chose site par site.

Voir ici http://www.stardeveloper.com/articles/display.html?article=2007110401&page= 1] 1

Est-ce aussi bon que la configuration dans IIS? A quel point l'effet est-il dramatique? Des problèmes connus?

Était-ce utile?

La solution

Si vous avancez avec cela, je suggérerais de mettre en place un HttpModule contre global.asax. HttpModule vous permet de désactiver la compression avec une modification de configuration plutôt que de la reconstruire et vous permet de singer avec votre assembly de compression distinct de votre application Web.

Rich Crane a un très joli module 2.0 ici: http://www.codeplex.com/httpcompression/ si vous souhaitez être opérationnel rapidement.

Le projet Blowery mentionné par Steven Rogers est également un HttpModule.

Sinon, écrire vous-même est assez simple. Un HttpModule vous donne les mêmes événements que global.asax - BeginRequest, EndRequest et des événements plus détaillés, tels que PostReleaseRequestState et PreSendRequestHeaders, dont vous pourriez avoir besoin pour éliminer toutes les rides.

En ce qui concerne la compression d’IIS vers HttpModule, IIS est nettement plus facile, car vous n’aurez pas à vous soucier d’un autre assemblage. J'ai utilisé les deux méthodes avec des applications professionnelles et les deux fonctionnent à peu près de la même manière en test de charge. Si IIS est disponible, je dirais de l’utiliser.

Une compression de 60 à 80% des fichiers HTML, JS, CSS et XML est courante avec gzip. N'oubliez pas que votre charge utile peut être constituée d'images et d'objets multimédias beaucoup plus difficiles à compresser.

Autres conseils

http://blowery.org/httpcompress/

Nous utilisons cet utilitaire de compression depuis quelque temps déjà. Plutôt bien.

Je pense que l'option Global.asax sera un bon choix si vous êtes dans un environnement d'hébergement partagé, par exemple, où vous n'avez pas accès à la configuration IIS.

IIS 6 fournit un support de compression de base, mais si vous êtes déjà dans IIS 7, il vous fournit un excellent Compression HTTP , vous pouvez définir les fichiers à compresser en fonction de leur type MIME dans vos fichiers de configuration ...

Il réalise essentiellement la même chose que la compression IIS: les deux envoient la réponse avec la compression gzip. J'ai récemment mis en œuvre cette méthode, qui réduit systématiquement la taille de la réponse de 60%, sans impact sur les performances.

Il existe quelques problèmes possibles. Tout d'abord, vous devez faire attention à la mise en cache de sortie. Vous devez utiliser un VaryBy personnalisé pour vous assurer que différentes versions sont mises en cache pour les demandes avec différents en-têtes Accept-Encoding. Sinon, si la version compressée est mise en cache, tous les utilisateurs la recevront, que leur navigateur l'accepte ou non.

Deuxièmement, GZipStream tronquera parfois les derniers caractères de la réponse si vous utilisez Response.End ou Response.Flush, car le flux de données n'est fermé que trop tard. Je ne connais aucune solution intéressante à ce problème.

Enfin, cela ne fera que compresser votre code HTML. Tous les fichiers CSS ou Javascript seront servis normalement. Vous devez, par exemple, servir ces fichiers via un IHttpHandler personnalisé pour les compresser.

Il existe des problèmes avec JavaScript et VBScript. Le problème JavaScript a été confirmé dans un commentaire de xxldaniel sur un article de codinghorror , et j'avais des problèmes avec VBScript (pour M $ Office Automation) avec un script de type JSON, "Scripting.Dictionary " avec " Microsoft.XMLHTTP " demande.

Vous pouvez essayer les mod_gzip modules. Il utilise la version gérée ZLib et permet une configuration hautement ajustable. La syntaxe est compatible avec le même module Apache et même étendu. Ainsi, par exemple, vous pouvez définir différents niveaux de compression pour différents types de mime, etc.

.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top