在ASP.NET MVC中,我使用了web.config来启用和配置IIS7.5 gzip压缩设置。但是他们压缩级别设置似乎根本没有效果:
<scheme name="gzip" dynamicCompressionLevel="9" staticCompressionLevel="9"/>
对于这两个设置的压缩级别= 0,我的主页被压缩到9,290字节(从39,623)
对于这两个设置的压缩级别= 9,我的主页被压缩为9,290字节(从39,623)
(使用fiddler检查压缩/未压缩的大小)
压缩量没有区别 - 为什么?这发生在我的本地开发机器上 - Windows 7.我还没有在我们的Win 2008 Web服务器上尝试过它。
web.config中的完全压缩设置:
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" dynamicCompressionLevel="10" staticCompressionLevel="10"/>
<dynamicTypes>
<add mimeType="text/*" enabled="true"/>
<add mimeType="message/*" enabled="true"/>
<add mimeType="application/javascript" enabled="true"/>
<add mimeType="application/x-javascript" enabled="true"/>
<add mimeType="application/xml" 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="application/x-javascript" enabled="true"/>
<add mimeType="application/xml" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
</staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>
编辑:显然最高级别为9.此页面显示为10但必须不正确http://www.iis.net/configreference/system.webserver/httpcompression/scheme。使用9级
时问题仍然存在答案 0 :(得分:2)
请仔细检查dynamic compression installed
接下来,您可以查看覆盖某些compression defaults dynamicCompressionDisableCpuUsage
设置为90%,压缩不会再次启动,直到您进入dynamicCompressionEnableCpuUsage
,默认为50%。我建议提高后者。
以下问题有一些详细解答
How can I get gzip compression in IIS7 working?
更新:
设置可能会在应用程序级别被锁定,因此您应该尝试运行以下命令:
appcmd set config -section:urlCompression /doDynamicCompression:true
如果仍然存在问题,可能需要调整minFileSizeForComp
,其默认值为increased with later IIS versions。
根据评论,也可以尝试动态启动并在试图解决这个问题时保持静态。
答案 1 :(得分:1)
如果您的主页未动态生成,则dynamicCompressionLevel将无效。
由于默认情况下启用了静态压缩,因此可能已经缓存了主页的压缩版本。您可以尝试简单地修改主页(例如,只需更改一个字符)。然后应该使用新设置重新压缩。
默认静态压缩可能已经达到9级。如果您没有看到任何更改,您还可以尝试将静态级别降低到1以查看是否存在差异。
您可能需要提供DLL:
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" />
答案 2 :(得分:0)
您的MVC管道是否包含压缩过滤器?
如果是,它将优先于IIS动态压缩模块。此模块上的设置对MVC页面没有影响,因为IIS动态压缩模块不会尝试压缩已经过http压缩的输出。