【问题标题】:gzip compression not working with IIS 8.5gzip 压缩不适用于 IIS 8.5
【发布时间】:2016-10-23 02:03:37
【问题描述】:

我有一个运行 IIS 的 Server 2012 R2 机器。我已经尝试为在那个盒子上运行的几个站点启用压缩,但我不知道为什么它不起作用。我的请求标头都显示了接受编码,但响应标头始终是 Transfer-Encoding:chunked 和 Vary:Accept-Encoding。已执行以下步骤以尝试使 gzip 压缩工作:

  1. 已在每个站点和机器级别启用动态和静态压缩
  2. 这两种压缩方法都是从服务器管理器安装的
  3. Httpcompression 和 urlcompression 节点已手动添加到 web.configs
  4. 为压缩定义了 Mime 类型
  5. frequentHitThreshold 已设置为 1,因此所有内容应在首次尝试访问后压缩

已进行跟踪以查看为什么没有发生压缩。我拥有的唯一信息是代码 DYNAMIC_COMPRESSION_NOT_SUCCESS,原因为 1。

这是标题:

GET http://redactedservername:8082/ HTTP/1.1  
Host: redactedservername:8082  
Connection: keep-alive  
Cache-Control: max-age=0  
Accept:   text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8  
Upgrade-Insecure-Requests: 1  
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36  
DNT: 1  
Accept-Encoding: gzip, deflate, sdch  
Accept-Language: en-US,en;q=0.8  
Cookie: ASP.NET_SessionId=gnqovt55ggt22lycufudc0ns  

`

HTTP/1.1 200 OK  
Cache-Control: private  
Content-Type: text/html; charset=utf-8  
Vary: Accept-Encoding  
Date: Wed, 22 Jun 2016 14:00:57 GMT  
Transfer-Encoding: chunked

可以执行哪些其他步骤来使压缩起作用?

【问题讨论】:

  • 您可能还想检查doDiskSpaceLimitingdynamicCompressionDisableCpuUsagestaticCompressionDisableCpuUsage 设置iis.net/configreference/system.webserver/httpcompression
  • DisableCpuUsage 阈值明显高于 CPU 利用率,并且 doDiskSpaceLimiting 设置为 false
  • 您是否直接连接到 IIS(代理等)?能否分享一下 HTTP 请求和 HTTP 响应?
  • 没有代理。由于长度限制,正在将标题添加到原始帖子中。

标签: iis gzip windows-server-2012-r2 iis-8.5 http-compression


【解决方案1】:

压缩工作正常,但 ESET Antivirus 正在监控 Web 流量。这修改了响应,我没有按预期获得 gzip 内容编码。禁用 ESET 并再次测试表明压缩功能正常。

【讨论】:

  • 对我来说也是这样,但我运行了 BitDefender。很棒的发现!
  • 这太棒了,我花了几天时间调查这些问题。你救了我的命:)