gzip压缩未生效,即使在applicationHost.config中已允许。

7
我希望为我的运行在ASP.NET4.5和IIS7.5上的网站启用gzip压缩,但无法进行压缩。由于我使用的是共享主机,所以无法直接在IIS中设置。

applicationHost.config

我将这个从 Deny 改为了 Allow (我在这里读到,不应该改变 allowDefinition 设置:如何使用appcmd在IIS 7中更改allowDefinition部分属性?
<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Allow" />

我的网站的 web.config 文件

<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/javascript" enabled="true"/>
    <add mimeType="application/x-javascript" enabled="true"/>
    <add mimeType="application/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/javascript" enabled="true"/>
    <add mimeType="application/x-javascript" enabled="true"/>
    <add mimeType="application/javascript; charset=utf-8" enabled="true"/>
    <add mimeType="*/*" enabled="false"/>
  </staticTypes>
</httpCompression>    

作为上述的替代方案,我还尝试将这个添加到我的web.config文件中:
<configuration>
   <system.webServer>
      <urlCompression doStaticCompression="true" doDynamicCompression="false" />
   </system.webServer>
</configuration>

我在Windows 2008服务器管理器中看到已安装静态内容压缩,但未安装动态内容压缩。
然后当我进入我的网站的IIS和模块压缩时,我现在看到启用动态内容压缩已启用(尽管显然未安装),但处于灰色不可用状态,并且静态内容压缩已被选中。

enter image description here

尽管启用了静态和动态内容压缩,但使用Fiddler时我看不到任何压缩发生。

Fiddler中的Decode按钮未启用。 我还使用http://www.whatsmyip.org/http-compression-test/http://www.gidnetwork.com/tools/gzip-test.php 进行了检查。

但无论我做什么,在使用Fiddler进行检查时,我都看不到gzip压缩:

enter image description here

我已经检查过这些帖子:

http://blog.arvixe.com/how-to-enable-gzip-on-iis7/

启用IIS7 gzip


你是否查看了有关自动解码以及可能与第三方(例如Port80)进行检查的这些答案?https://dev59.com/EXNA5IYBdhLWcg3wmfIa - Chris Haas
我更新了我的帖子。我也测试了其他网站。我应该用哪个Port80产品进行测试:http://www.port80software.com/download/? - Adam
这是他们在线测试工具的链接:http://www.port80software.com/tools/compresscheck.asp?url=输入URL - Chris Haas
这也表明没有压缩:http://www.port80software.com/tools/compresscheck.asp?url=http://www.toptrouwen.nl - Adam
显示剩余6条评论
1个回答

5

IIS的压缩功能有些问题,它不会立即生效。只有当内容被频繁访问时,IIS才会对其进行压缩,因此看起来某些内容未被压缩,实际上在被多次访问后将会被压缩。

此外,请确保你列出的MIME类型与代码返回的内容类型完全匹配。

例如,对于JavaScript:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
  <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" />
  <dynamicTypes>
    <add mimeType="text/*" enabled="true" />
    <add mimeType="message/*" enabled="true" />
    <add mimeType="application/x-javascript" enabled="true" />
    <add mimeType="application/javascript" enabled="true" />
    <add mimeType="application/javascript; charset=utf-8" enabled="true" />
    <add mimeType="application/json" enabled="true" />
    <add mimeType="application/json; charset=utf-8" enabled="true" />
    <add mimeType="*/*" enabled="false" />
  </dynamicTypes>
  <staticTypes>
    <add mimeType="text/*" enabled="true" />
    <add mimeType="message/*" enabled="true" />
    <add mimeType="application/x-javascript" enabled="true" />
    <add mimeType="application/atom+xml" enabled="true" />
    <add mimeType="application/xaml+xml" enabled="true" />
    <add mimeType="*/*" enabled="false" />
  </staticTypes>
</httpCompression>

可能需要此项功能。

以下是我几年前写的一篇博客文章,提供更多信息: http://weblog.west-wind.com/posts/2011/May/05/Builtin-GZipDeflate-Compression-on-IIS-7x

还有另一篇文章,讨论了一些类似于您的问题(请查看评论): http://weblog.west-wind.com/posts/2007/Jun/22/IIS-7-and-JavaScript-Compression-not-working-consistently


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接