7

在 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 开始)

(使用提琴手检查压缩/未压缩的大小)

压缩量没有区别 - 为什么会这样?这发生在我的本地开发机器 - 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。使用level 9时问题依旧

4

3 回答 3

2

请仔细检查您是否安装了动态压缩

接下来,您可能会查看覆盖一些默认 设置为 90% 的压缩,并且在您低于默认设置为 50%dynamicCompressionDisableCpuUsage之前,压缩不会再次启动。dynamicCompressionEnableCpuUsage我建议提高后者。

对于此类问题,还建议在SO 上的几个 地方使用失败的请求跟踪,这可能会帮助您发现问题。

以下问题有一些详细的解答

如何在 IIS7 中进行 gzip 压缩?

压缩不起作用

更新:

该设置可能在应用程序级别被锁定,因此您应该尝试运行以下命令:

appcmd set config -section:urlCompression /doDynamicCompression:true

如果它仍然是一个问题,那么可能值得调整minFileSizeForComp其默认值随着更高的 IIS 版本而增加

根据评论,在您尝试解决此问题时,还可以尝试动态启动和停止静态。

于 2012-10-01T08:29:57.433 回答
1

如果您的主页不是动态生成的,那么 dynamicCompressionLevel 将不起作用。

由于默认启用静态压缩,因此可能已经缓存了主页的压缩版本。您可以尝试简单地修改您的主页(例如,只更改一个字符)。然后它应该使用新设置重新压缩。

有可能默认的静态压缩已经在 9 级了。如果你看没有变化,你也可以尝试将静态级别降低到 1,看看是否有差异。

您可能需要提供 DLL:

<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" />
于 2012-10-05T20:30:25.190 回答
0

您的 MVC 管道是否包含压缩过滤器?

如果是,它将优先于 IIS 动态压缩模块。此模块上的设置不会影响您的 MVC 页面,因为 IIS 动态压缩模块不会尝试压缩已经 http 压缩的输出。

于 2015-09-08T09:06:34.240 回答