Ich habe IIS 7.5 so eingerichtet, dass die GZIP-Komprimierung sowohl für statische als auch für dynamische Inhalte verwendet wird. Durch Überprüfen des Ordners „IIS Temporary Compressed Files“ habe ich festgestellt, dass tatsächlich alle statischen MIME-Typen komprimiert werden, die ich in meiner Konfiguration definiert habe. Ich habe auch eine Rückverfolgung fehlgeschlagener Anforderungen erzwungen und festgestellt, dass die Komprimierung erfolgreich und ohne Fehler ausgeführt wird, wenn die Anforderung eingeht (sowohl statisch als auch dynamisch).
Die Antwort, die IIS an den Browser zurücksendet, ist jedoch unkomprimiert. Die Größe der Antwort ist gleich und es gibt keinen Header „Content-Encoded: gzip“ in der Antwort.
Meine IIS-Konfiguration:
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" minFileSizeForComp="1" noCompressionForHttp10="false" noCompressionForProxies="false">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/json" enabled="true" />
<add mimeType="application/json; charset=utf-8" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/x-javascript; charset=utf-8" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/atom+xml" enabled="true" />
<add mimeType="application/xaml+xml" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/x-javascript; charset=utf-8" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>
...
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
...
<serverRuntime frequentHitThreshold="1" />
Beispielanforderung (Beispiel ist dynamisch, gilt aber auch für statische Typen):
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Content-Length:0
Cookie:ASP.NET_SessionId=...
Host:...
Origin:...
Pragma:no-cache
Referer:...
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
Beispielantwort:
Cache-Control:private
Content-Type:application/json; charset=utf-8
Date:Tue, 29 Sep 2015 21:37:28 GMT
Server:Microsoft-IIS/7.5
Set-Cookie:.ASPXAUTH=...
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:5.0
X-Powered-By:ASP.NET
Ich habe erneut überprüft, dass die Komprimierung erfolgreich ist. Aus irgendeinem Grund werden die komprimierten Daten in der Antwort einfach nicht gesendet.