【问题标题】:IIS 7 HttpCompression Not WorkingIIS 7 HttpCompression 不工作
【发布时间】:2011-05-24 05:34:01
【问题描述】:

我正在使用以下 web.config 块在 IIS7 上启用静态和动态压缩,但它没有压缩响应。(通过 Fiddler 验证)

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
     <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
     <dynamicTypes>
           <add mimeType="text/css" enabled="true" />
           <add mimeType="message/*" enabled="true" />
           <add mimeType="application/x-javascript" enabled="true" />
           <add mimeType="*/*" enabled="true" />
     </dynamicTypes>
     <staticTypes>
           <add mimeType="text/css" enabled="true" />
           <add mimeType="text/javascript" enabled="true" />
           <add mimeType="message/*" enabled="true" />
           <add mimeType="application/x-javascript" enabled="true" />
           <add mimeType="*/*" enabled="true" />
     </staticTypes>
</httpCompression>
 <staticContent>
    <remove fileExtension=".js" />
    <mimeMap fileExtension=".js" mimeType="application/x-javascript" />
</staticContent>

但它没有进行任何压缩。我还检查了服务器是否安装了静态/动态压缩。也试过这个how-can-i-get-gzip-compression-in-iis7-working 但对我不起作用。任何人都可以提供新的帮助吗?

【问题讨论】:

  • 您找到解决方案了吗?我有同样的问题

标签: iis-7 compression


【解决方案1】:

按照 * 上的 sn-ps 建议,我无法使其正常工作。以下是我的管理方法。

首先,确保将动态压缩安装为 Web 角色的一项功能。通常,如果未安装该模块,您会在 IIS 管理器中收到警告,但如果您手动设置 web.config,则不会收到警告,因为它会欺骗 IIS UI 逻辑。

然后,我删除了所有 web.config 内容(如您的问题)并通过 IIS 管理器进行设置。我这样做是因为在 MSDN 上,一条很容易被忽略的评论说:

您还可以为 MIME 类型添加通配符条目。但是,您可以 仅为 Web 服务器级别设置 MIME 类型。例如,要启用 对默认网站的所有 MIME 类型进行静态压缩,首先 为服务器级别的 MIME 类型添加通配符条目,然后 为默认网站启用静态压缩。

专注于:

但是,您只能为 Web 服务器级别设置 MIME 类型。

所以我不确定所有这些过滤器和东西在 web.config 中是否真的有效。就我个人而言,它不适合我 - 即没有 Content-Encoding: gzip 标头。

全部完成后,我必须使用 IIS 管理器,在 IIS:压缩下,以确保它设置在服务器级别,然后对于站点,我必须删除勾选,应用它,再次勾选它,然后重新申请。

我最终在 web.config 中只有 &lt;urlCompression doDynamicCompression="true" /&gt;,这有点奇怪,因为我不关心压缩 URL。

随便。我现在在我的网站的响应标头中确实有 Content-Encoding: gzip - 所以我假设它可以正常工作。

【讨论】:

  • 谢谢,安装“动态压缩”选项对我有帮助。
【解决方案2】:

您能否启用失败请求跟踪,它应该包含有关可能发生的情况的信息,它通常分为几个存储桶,1)生成压缩文件的权限,2)文件太小而需要压缩,3)文件频率不够,所以没有被压缩,4)mimetype问题

http://learn.iis.net/page.aspx/266/troubleshooting-failed-requests-using-tracing-in-iis7/

【讨论】:

  • 看起来您好像是 MSFT 的 IIS 管理工具的高级开发主管,您能否评论一下 MSDN 关于压缩和 MIME 类型以及只能在服务器级别配置的引文?谢谢。