我在一台运行 W2K8 的 IIS7 机器上建立了多个网站。
我在用着Fiddler帮我判断是否有东西被压缩了。没有。
因此,我在 Google 上搜索了一些东西并尝试了一些方法。我有以下几点...
C:\Windows\System32\inetsrv>appcmd set config -section:urlCompression /doDynamic
Compression:true
Applied configuration changes to section "system.webServer/urlCompression" for "
MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"
C:\Windows\System32\inetsrv>appcmd list config -section:urlCompression
<system.webServer>
<urlCompression doDynamicCompression="true" />
</system.webServer>
C:\Windows\System32\inetsrv>appcmd list config -section:serverRuntime
<system.webServer>
<serverRuntime frequentHitThreshold="1" />
</system.webServer>
我已确保 urlCompression、httpCompression 和 serverRuntime 部分已解锁。
我还在我的 web.config 中添加了以下内容:-
<system.webServer>
<serverRuntime frequentHitThreshold="1" frequentHitTimePeriod="00:10:00" />
<!-- NOTE: This requires the following section to be unlocked: appcmd set config -section:urlCompression /doDynamicCompression:true -->
<urlCompression doDynamicCompression="true" dynamicCompressionBeforeCache="true" />
<httpCompression noCompressionForHttp10="False" noCompressionForProxies="False">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" dynamicCompressionLevel="4" staticCompressionLevel="9" />
<dynamicTypes>
<clear />
<add mimeType="*/*" enabled="true" />
</dynamicTypes>
<staticTypes>
<clear />
<add mimeType="*/*" enabled="true" />
</staticTypes>
</httpCompression>
<caching>
<profiles>
<add extension=".css" policy="CacheUntilChange" kernelCachePolicy="DontCache" duration="07:00:00" location="Any" />
<add extension=".js" policy="CacheUntilChange" kernelCachePolicy="DontCache" duration="07:00:00" location="Any" />
<add extension=".png" policy="CacheUntilChange" kernelCachePolicy="DontCache" duration="07:00:00" location="Any" />
<add extension=".jpg" policy="CacheUntilChange" kernelCachePolicy="DontCache" duration="07:00:00" location="Any" />
<add extension=".jpeg" policy="CacheUntilChange" kernelCachePolicy="DontCache" duration="07:00:00" location="Any" />
<add extension=".gif" policy="CacheUntilChange" kernelCachePolicy="DontCache" duration="07:00:00" location="Any" />
<add extension=".zip" policy="CacheUntilChange" kernelCachePolicy="DontCache" duration="07:00:00" location="Any" />
<add extension=".htm" policy="CacheUntilChange" kernelCachePolicy="DontCache" duration="07:00:00" location="Any" />
</profiles>
</caching>
<staticContent>
<clientCache cacheControlMaxAge="31.00:00:00" cacheControlMode="UseMaxAge" />
</staticContent>
....
</system.webServer>
所以检查一下,我不确定我做错了什么...???有什么建议吗?我该如何调试以查看哪里读取不正确,等等?
当我抓取网站内容等时,我也一直在进行“强制刷新”。绝对没有得到服务器压缩:(
请帮忙!
更新 1:浏览器请求确实包含接受编码:gzip、deflate。
答案1
基础知识:
检查浏览器是否确实发送了 Accept-Encoding 标头,并且没有被防火墙剥离。
在响应 200 和 Web 服务器压缩上启用失败请求跟踪,并查看 IIS7 尝试压缩响应时显示的内容。
答案2
您在测试中没有使用 HTTP 1.0,对吧?noCompressionForHTTP10="False" 将阻止其工作。
我的建议是重新开始,使用默认设置让压缩工作,然后重新添加部分,直到再次出现问题。这是全新安装的默认设置:
<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/x-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>