Donc, je suis un peu un IIS7 n00b mais j'ai utilisé la plupart des anciens systèmes IIS depuis 3. J'essaie d'activer la compression dynamique et cela fonctionne, surtout. Cela ne fonctionne pas pour mes demandes ADO.Net Data Service (Astoria), groupées ou non.
J'ai trouvé le suivi de la demande ayant échoué (FREB) qui était vraiment utile. Et ce que je vois sur les demandes non groupées est Reason Code 12, NO_MATCHING_CONTENT_TYPE
. OK, donc je n'ai pas spécifié le type MIME correspondant, c'est facile.
Sauf que c'est ce que j'ai dans mon web.config (qui je pense est correct, mais peut-être pas).
<httpCompression dynamicCompressionDisableCpuUsage="100"
dynamicCompressionEnableCpuUsage="100"
noCompressionForHttp10="false"
noCompressionForProxies="false"
noCompressionForRange="false"
sendCacheHeaders="true"
staticCompressionDisableCpuUsage="100"
staticCompressionEnableCpuUsage="100">
<dynamicTypes>
<clear/>
<add mimeType="*/*"
enabled="true" />
</dynamicTypes>
<staticTypes>
<clear/>
<add mimeType="*/*"
enabled="true" />
</staticTypes>
</httpCompression>
<urlCompression doDynamicCompression="true"
doStaticCompression="true"
dynamicCompressionBeforeCache="false" />
Maintenant, je pense que cela signifie qu'il devrait compresser toute demande qui inclut l'en-tête Accept: Gzip. J'adorerais savoir ce que les autres pourraient penser ici.
Ma trace de violoneux:
GET /SecurityDataService.svc/GetCurrentAccount HTTP/1.1
Accept-Charset: UTF-8
Accept-Language: en-us
dataserviceversion: 1.0;Silverlight
Accept: application/atom+xml,application/xml
maxdataserviceversion: 1.0;Silverlight
Referer: http://sdev03/apptestpage.aspx
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 3.0.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)
Host: sdev03
Connection: Keep-Alive
Cookie: .ASPXAUTH=<snip>
HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Type: application/atom+xml;charset=utf-8
Server: Microsoft-IIS/7.0
DataServiceVersion: 1.0;
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Mon, 22 Mar 2010 22:29:06 GMT
Content-Length: 2726
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
*** <snip> removed ***
la source
"C:\Windows\System32\Inetsrv\Appcmd.exe" set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/javascript',enabled='True']" /commit:apphost
Et encore une fois: après ces modifications, vous ne les verrez que dans le bloc-notes. Bloc-notes ++ (ainsi que l'éditeur de Visual Studio 2010 !!)Réponses:
OK, il s'avère que vous ne pouvez pas configurer cela dans le web.config, seulement l'appHost.config. Je supposais que les docs disaient appHost.config mais j'avais supposé que c'était une spécification d'un concept général, pas le seul emplacement de configuration autorisé.
la source
web.config
remplacements des paramètres de compression, c'est pourquoi vous devez modifier leapplicationHost.config
. Cependant, au lieu de modifier les paramètres de compression, vous pouvez simplement autoriser les remplacements et vous êtes de retour dans les affaires.Peter, merci pour l'allusion - nous avons également constaté que le réglage
dans la
<httpCompression>
section deapplicationHost.config
fixe cela.Nous avons également dû spécifier l'encodage en raison d'un bug dans le code de compression:
Voici la section pertinente dans son intégralité
la source
À partir d'une nouvelle installation, mon
applicationHost.config
(en%windir%\system32\inetsrv\config
) avait le paramètre suivant:... ainsi qu'un ensemble par défaut de types MIME pour compresser qui, malheureusement, n'inclut pas JSON et d'autres types de données qui seraient de bons candidats à la compression.
Passer à:
active la configuration de la
httpCompression
balise sous lasystem.webServer
balise myweb.config
.J'ai confirmé cela en définissant la
httpCompression
section de laapplicationHost.config
sur:... et maintenant je peux définir tous les types MIME que je veux réellement compresser dans le
web.config
.la source
httpCompression
élément auweb.config
niveau des nouvelles versions d'IIS ou est-ce impossible? Les documents sont un cauchemar - il ne semble pas que l'accord soit officiel.Pour ajouter des mimetypes manquants dans PowerShell, utilisez les commandes suivantes:
Notez que l'ordre des mimeTypes est important, car IIS semble prendre la première correspondance. Cela signifie que les mimeTypes avec caractères génériques (*) doivent être inférieurs aux mimeTypes sans caractères génériques. Par conséquent, assurez-vous que le mimeType
*/*
est en bas, car aucune entrée en dessous ne sera utiliséeÉditer:
IIS craint, donc la meilleure option est de simplement effacer les staticTypes et de tout ajouter à nouveau dans le bon ordre:
la source