首页 > 解决方案 > IIS 8.5 静态压缩缺少 Content-Encoding 响应标头,但 Failed Request Tracing 显示使用 gzip 进行压缩

问题描述

我观察到Content-Encoded响应头丢失了,特别是Content-Encoded: gzip。我正在使用static content compression. 该dynamic content compression功能从未安装过。我安装了它,启用它,然后再次测试。这一次,响应中出现了Content-Encoded: gzip 。问题是为什么响应头出现在动态内容压缩中而不是静态内容压缩中?我相当肯定 IIS 正在将 gzip 应用于静态内容压缩。原因如下:

  1. 我有一个 IIS URL 重写出站规则,它修改 HTML 页面上的响应。出站规则产生错误 500.52,URL 重写模块错误 - 当 HTTP 响应的内容被编码(“gzip”)时,无法应用出站重写规则。规则不是问题,只是据报道正在应用 gzip 的证据。我禁用了规则。这是线索#1。

  2. 线索 #2 是我启用Failed Request Tracing并观察到不仅应用了静态压缩,而且 StaticFileModule 将压缩文件存储在以下位置:C:\INETPUB\TEMP\IIS TEMPORARY COMPRESSED FILES\MY WEBSITE\$^_GZIP_D^\INETPUB \WWWROOT\TEST.HTML

我阅读了有关IIS HTTP 压缩的 Microsoft 文档——我可能是错的——我没有看到任何表明 gzip 可以用于静态压缩的语言。基于以上两条线索,gzip 被用于静态压缩。

所以我回到最初的问题,即Content-Encoded缺少响应标头static content impression,但有证据表明 IIS 不仅压缩静态内容,而且使用gzip. 这只是一个错误吗?这是设计使然吗?

标签: iiscompressiongzipiis-8.5content-encoding

解决方案


静态压缩在工作时会添加 Content-Encoded 标头。

如果启用失败请求跟踪和跟踪静态压缩模块。你会看到这个。

在此处输入图像描述

这意味着如果静态文件没有经常被击中,静态压缩将不起作用。

如果您将此请求转发数十次。然后你会看到那个标题。

在此处输入图像描述

请注意,压缩的最小文件大小有限制。您可以在 IIS manager->server node->configuration manager->system.webServer/httpCompression->minfileforcomp 中修改该值

在此处输入图像描述


推荐阅读