Comment puis-je activer IIS7 pour gzip fichiers statiques tels que js et css et comment tester si IIS7 est vraiment gziping eux avant de l’envoyer au client ?
Merci !
Comment puis-je activer IIS7 pour gzip fichiers statiques tels que js et css et comment tester si IIS7 est vraiment gziping eux avant de l’envoyer au client ?
Merci !
Vous pouvez activer la compression GZIP entièrement dans votre Web.config
le fichier. Ceci est particulièrement utile si vous êtes en hébergement mutualisé et ne pouvez pas configurer IIS directement, ou vous voulez que votre config à réaliser entre tous les environnements que vous ciblez.
<system.webServer>
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
<dynamicTypes>
<add mimeType="text/*" enabled="true"/>
<add mimeType="message/*" enabled="true"/>
<add mimeType="application/javascript" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true"/>
<add mimeType="message/*" enabled="true"/>
<add mimeType="application/javascript" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
</staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>
Pour tester si la compression est de travailler ou non, utiliser les outils de développement de Chrome ou de Firebug pour Firefox et de veiller à la tête de réponse HTTP est défini:
Content-Encoding: gzip
Notez que cet en-tête ne sera pas présent si le code de réponse est 304 (Non Modifiée). Si c'est le cas, faire une actualisation complète (maintenez la touche maj ou ctrl enfoncée pendant que vous appuyez sur le bouton actualiser) et vérifiez de nouveau.
Mondial Gzip dans HttpModule
Si vous n'avez pas accès à la dernière instance de IIS (hébergement mutualisé...), vous pouvez créer un HttpModule qui ajoute ce code à chaque HttpApplication.Begin_Request événement :
HttpContext context = HttpContext.Current;
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
HttpContext.Current.Response.Cache.VaryByHeaders["Accept-encoding"] = true;
Les tests
Bravo, aucune solution n'est fait sans le tester. J'aime utiliser le plugin Firefox "Liveheaders" il montre toutes les informations au sujet de chaque message http entre le navigateur et le serveur, y compris la compression, la taille du fichier (que vous pouvez comparer la taille du fichier sur le serveur).
Voici un post sympa sur le sujet...
http://www.coderjournal.com/2008/04/IIS-7-compress-JavaScript-gzip/
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.