Asp.net IIS应用程序在响应标头中缺少内容编码-gzip

Asp.net IIS应用程序在响应标头中缺少内容编码-gzip,asp.net,iis,http-compression,iis-10,Asp.net,Iis,Http Compression,Iis 10,在Firebug中,请求头具有以下条目: 接受编码:gzip,deflate 但是没有: 内容编码:gzip 在响应头中 不管我做了什么尝试,在SO和其他网站上找到了很多答案后,似乎什么都不管用!静态文件和动态文件都没有被压缩,或者至少如果它们被压缩,那么响应头中就没有返回内容编码-gzip值 下面是我的web.config设置示例: 我忽略了命中频率 staticCompressionIgnoreHitFrequency=“true” 我已经确认IIS实际上正在压缩我可以在中看到的文件:

在Firebug中,请求头具有以下条目:
接受编码:gzip,deflate

但是没有:
内容编码:gzip
在响应头中

不管我做了什么尝试,在SO和其他网站上找到了很多答案后,似乎什么都不管用!静态文件和动态文件都没有被压缩,或者至少如果它们被压缩,那么响应头中就没有返回内容编码-gzip值

下面是我的web.config设置示例:


我忽略了命中频率
staticCompressionIgnoreHitFrequency=“true

我已经确认IIS实际上正在压缩我可以在中看到的文件:
C:\inetpub\temp\IIS临时压缩文件

如此处所述:
我已确保在Windows功能>Internet信息服务>WWW服务>性能功能中启用静态和动态压缩

我也尝试过这家伙的方法:


编辑1:
IIS版本是10,但我也在IIS 8.5上尝试过


编辑2:
我现在还尝试了在此链接中找到的各种配置文件: 它提供了一些“最佳实践”web.config文件。
未解决


编辑3:
基于@Nkosi的输入,我创建了一个全新的Asp.net MVC应用程序,并使用我尝试过的所有这些选项对其进行了配置。 这是我从Fiddler那里得到的原始标题:

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/javascript; charset=UTF-8
Expires: Wed, 20 Jul 2016 18:22:47 GMT
Last-Modified: Wed, 20 Jul 2016 18:22:47 GMT
Server: Microsoft-HTTPAPI/2.0
Date: Wed, 20 Jul 2016 18:22:47 GMT
如您所见,没有内容编码:Gzip
未解决


编辑4:
我尝试过在Global.asax部分向BeginRequest事件添加代码的方法:
未解决


编辑5:
因此,我只是尝试根据以下答案启用跟踪:
没有失败,但我注意到在跟踪文件的底部有一个名为GENERAL_RESPONSE_HEADERS的部分,它提供了以下内容:

Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Server: Microsoft-IIS/10.0
X-AspNetMvc-Version: 5.2
X-AspNet-Version: 4.0.30319
X-Powered-By: My Little Pony
X-UA-Compatible: IE=Edge,chrome=1
这适用于每个静态类型文件。
但是,我在跟踪文件中发现了以下内容:

8. STATIC_COMPRESSION_START  08:04:03.552 
9. STATIC_COMPRESSION_NOT_SUCCESS Reason="NOT_FREQUENTLY_HIT" 08:04:03.552 
10. STATIC_COMPRESSION_END  08:04:03.552 
压缩不成功的原因是不经常点击。。。奇怪,因为我肯定有忽略命中频率选项设置为真

因此,我刚进入IIS管理器,在服务器上将忽略命中频率设置为true(即applicationHost.config),并将跟踪文件输出更改为以下内容:

8. STATIC_COMPRESSION_START  08:19:17.489 
9. STATIC_COMPRESSION_SUCCESS  08:19:17.489 
10. STATIC_COMPRESSION_END  08:19:17.489 
我返回并在applicationHost.config中关闭了它,它返回到静态压缩,但没有成功,因此这肯定会有所不同。然而,当我看FireBug时,它仍然提供未压缩的文件,并且没有GZIP内容编码响应头

我在失败的请求跟踪中注意到的另一个有趣的地方是最后两个entires GENERAL_FLUSH_RESPONSE_END和GENERAL_Request_END,它们都显示我的Bootstrap.css文件发送了17903字节(约18kb),与我在IIS临时压缩文件文件夹中看到的文件的压缩版本相匹配。因此,文件被物理压缩,根据失败的请求跟踪它正在发送正确的内容。。。但是浏览器会选择117kb的完整文件吗?
未解决



我正在使用IIS10,我的web.config


当我测试从浏览器(Firefox、IE11、Edge、Google Chrome)到简单MVC应用程序的请求时

所有请求都有
接受编码:gzip,deflate
,响应返回
内容编码:gzip

我甚至用小提琴手测试过。手动编写请求

GEThttp://localhost/MyWebApplication HTTP/1.1
用户代理:Fiddler
主机:本地主机
接受编码:gzip,deflate
得到同样的结果

HTTP/1.1200正常
缓存控制:专用
内容类型:text/html;字符集=utf-8
内容编码:gzip
改变:接受编码
服务器:Microsoft IIS/10.0
X-AspNetMvc-Version:5.2
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET
日期:2016年7月18日星期一15:26:06 GMT
内容长度:3826
...
Css、Js和所有其他基于文本的文件正在被压缩

您可能需要重新检查配置,以确保在IIS和web.config中正确配置了压缩

更新:

我注意到图像没有被压缩

请求

GEThttp://localhost/MyWebApplication/Images/Logo_small.png HTTP/1.1
用户代理:Fiddler
主机:本地主机
接受编码:gzip,deflate
回应

HTTP/1.1200正常
缓存控制:最大年龄=604800
内容类型:图像/png
最后修改:2015年11月27日星期五03:15:22 GMT
接受范围:字节
ETag:“c9d1fdd9c128d11:0”
服务器:Microsoft IIS/10.0
X-Powered-By:ASP.NET
日期:2016年7月18日星期一15:33:02 GMT
内容长度:2970
...
在google fu发现图像通常已经被压缩后,gzip就没有被应用

来自web.config的完整system.webServer


我对IIS和gzip配置有类似的情况

在Firebug中,请求标头具有以下条目: 接受编码:gzip,deflate

但是在响应头中没有:内容编码:gzip

在我的案例中,问题在于防病毒保护。实际上已经应用了gzip,但是启用了防病毒设置保护http连接(取决于具体的程序),解压缩响应并检查它,然后动态重写响应头

注意:某个代理/防病毒程序更改您的响应时的关键属性
<urlCompression doDynamicCompression="true" doStaticCompression="true" dynamicCompressionBeforeCache="false" />