7

我想使用 IIS7.5 为在 ASP.NET4.5 上运行的站点启用 gzip 压缩,但无法对其进行压缩。

我在共享主机上,所以我不能直接在 IIS 中设置它。

应用程序主机配置

我将其从更改DenyAllow(我在这里读到我不应该更改allowDefinition设置:How do you change the allowDefinition section attribute using appcmd in IIS 7?

<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 到我的站点时,我现在看到的模块压缩Enable Dynamic content compression已启用(即使显然没有安装)但显示为灰色,并且检查了静态内容压缩。

在此处输入图像描述

尽管如此:即使启用了静态和动态内容压缩,我也没有看到使用 Fiddler 进行压缩。

DecodeFiddler 中未启用该按钮。我还检查了http://www.whatsmyip.org/http-compression-test/http://www.gidnetwork.com/tools/gzip-test.php

但无论我做什么,当我检查 Fiddler 时,我都没有看到 gzip 压缩: 在此处输入图像描述

我已经检查了这些帖子:

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

启用 IIS7 gzip

4

1 回答 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 -始终如一地工作

于 2014-02-20T12:28:09.633 回答