IIS没有对每个请求进行gzipping

时间:2013-12-30 22:14:08

标签: javascript .net iis gzip

我目前正在尝试研究是否在项目中实现.NET 4.5捆绑/缩小,或者通过我们之前实现的构建脚本坚持我们的缩小。

在进行A / B测试时,我注意到(缩小的)脚本会以不同的大小返回不同的请求。 Chrome网络标签会将相同的请求报告为1.55MB或455KB。将文件保存到磁盘时,Windows始终显示1,559,907字节的文件。

所以我看了一下标题并注意到了一些区别。请求标头是常量:

GET /WebOpsDev/Scripts/scriptLibsAll.min.js?v=706.19 HTTP/1.1
Host: aburr-dev.pus.local
Connection: keep-alive
Cache-Control: no-cache
Accept: */*
Pragma: no-cache
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
Referer: http://aburr-dev.pus.local/WebOpsDev/Account/LogOn
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: Username=webteam

但响应标头不同,特别是“Content-Encoding”标头:

HTTP/1.1 200 OK
Cache-Control: max-age=31536000
Content-Type: application/x-javascript
Last-Modified: Mon, 30 Dec 2013 21:38:42 GMT
Accept-Ranges: bytes
ETag: "99439982a75cf1:0"
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Mon, 30 Dec 2013 21:43:44 GMT
Content-Length: 1559907

HTTP/1.1 200 OK
Cache-Control: max-age=31536000
Content-Type: application/x-javascript
Content-Encoding: gzip
Last-Modified: Mon, 30 Dec 2013 21:38:42 GMT
Accept-Ranges: bytes
ETag: "0dd4082a75cf1:0"
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Mon, 30 Dec 2013 21:42:46 GMT
Content-Length: 463804

我的问题是,为什么gzip仅应用于某些请求而不是全部?为了在每个请求上应用gzip,需要更改什么?如果它对XHR有什么影响呢?

2 个答案:

答案 0 :(得分:1)

感谢响应者,但事实证明,IIS并不是每次请求都是GZIP。为了获得准确的测试,我必须关闭静态内容压缩,这与此处描述的相反: http://technet.microsoft.com/en-us/library/cc754668(v=ws.10).aspx

答案 1 :(得分:0)

确保在IIS中安装了静态和动态压缩

确保您的文件位于C:\ Windows \ System32 \ inetsrv \ config \ applicationHost.config

找到该部分

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" minFileSizeForComp="2000">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" staticCompressionLevel="9" dynamicCompressionLevel="9" />
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/json" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="application/atom+xml" enabled="true" />
<add mimeType="application/xaml+xml" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/json" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="application/atom+xml" enabled="true" />
<add mimeType="application/xaml+xml" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>

同样在您的项目中,请确保使用以获得最佳捆绑 http://www.nuget.org/packages/microsoft.aspnet.web.optimization/ https://www.nuget.org/packages/WebGrease

使用fiddler检查每个请求是否已正确压缩http://fiddler2.com/