Comment puis-je activer IIS7 pour gzip des fichiers statiques tels que js et css et comment puis-je vérifier si IIS7 les gzipse avant de les envoyer au client?
Vous pouvez activer la compression GZIP entièrement dans votre fichier Web.config
. Ceci est particulièrement utile si vous êtes sur un hébergement partagé et ne pouvez pas configurer directement IIS, ou si vous souhaitez que votre configuration soit transférée 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 vérifier si la compression fonctionne ou non, utilisez les outils developer de Chrome ou Firebug pour Firefox et assurez-vous que l'en-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é). Si tel est le cas, effectuez une actualisation complète (maintenez la touche Maj ou Contrôle enfoncée tout en appuyant sur le bouton d'actualisation), puis vérifiez à nouveau.
Vous devez activer la fonctionnalité dans le panneau de configuration des fonctionnalités Windows:
Global Gzip dans HttpModule
Si vous n'avez pas accès à la dernière instance IIS (hébergement partagé ...), vous pouvez créer un HttpModule qui ajoute ce code à chaque événement HttpApplication.Begin_Request:
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;
Test
Bravo, aucune solution n'est faite sans test. J'aime utiliser le plugin Firefox " Liveheaders " qui affiche toutes les informations sur 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).
Si vous utilisez YSlow avec Firebug et analysez les performances de votre page, YSlow vous indiquera quels artefacts de votre page ne sont pas gzip'd!
Si vous essayez également de gzip des pages dynamiques (comme ASPX) et que cela ne fonctionne pas, c'est probablement parce que l'option n'est pas activée (vous devez installer le module Dynamic Content Compression à l'aide des fonctionnalités Windows):
http://support.esri.com/fr/knowledgebase/techarticles/detail/38616
Essayez Firefox avec les addons Firebug installés. Je l'utilise; excellent outil pour développeur web.
J'ai également activé la compression Gzip dans IIS7 à l'aide de web.config.
Un autre moyen simple de tester sans rien installer est qu'il ne dépend pas non plus de la version de IIS. Collez votre URL à ceci lien - SEO Checkup
Pour ajouter à web.config: http://www.iis.net/configreference/system.webserver/httpcompression