在Win7 x64盒子上使用Internet Explorer 8,Firefox 3.6,Chrome 8和IIS 7.5。尽管标头表示应该使用IIS,但IIS仍未使用gzip
我正在使用IHttpHandler(.NET 4)提供一个文件。
据提琴手,从IE8我的IIS的要求说,它接受的gzip,但它没有返回:
(注意,loc.portal.com实际上是127.0.0.1)
GET http://loc.portal.com/AdminCenter/FileHandler.ashx?ID=115 HTTP/1.1 Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, */* Accept-Language: en-US User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDR; .NET4.0C; .NET4.0E; MS-RTC LM 8; InfoPath.3) Accept-Encoding: gzip, deflate Connection: Keep-Alive Host: loc.portal.com Cookie: LoginName=; ASP.NET_SessionId=d5qiw5nubkjd2r00gnebg3ar; .ASPXAUTH=BAEA blah blah
头返回从IIS到IE:
HTTP/1.1 200 OK Cache-Control: private Transfer-Encoding: chunked Content-Type: application/msword Server: Microsoft-IIS/7.5 Content-Disposition: attachment; filename="Roll Worksheet.doc" X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Mon, 24 Jan 2011 20:53:34 GMT
注意它没有被压缩。
与Firefox,但该请求是这样的:
GET http://loc.portal.com/AdminCenter/FileHandler.ashx?ID=115 HTTP/1.1 Host: loc.portal.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive Referer: http://loc.portal.com/sb.cn Cookie: ASP.NET_SessionId=hw104pctkzrdtciwg4ihriqx; .ASPXAUTH=4FBB blah blah
的响应,正确地说,它返回的gzip:
HTTP/1.1 200 OK Cache-Control: private Transfer-Encoding: chunked Content-Type: application/msword Content-Encoding: gzip Server: Microsoft-IIS/7.5 Content-Disposition: attachment; filename="Roll Worksheet.doc" X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Mon, 24 Jan 2011 20:55:07 GMT
铬类似于Firefox浏览器。它要求gzip并返回gzip。我可以通过Fiddler中显示的内容大小来看到,实际上,对于Chrome和Firefox,身体实际上是gzip,而不是IE。
我有“启用动态内容压缩”(以及静态内容压缩)在IIS中设置。我的IHttpHandler没有对压缩做任何特殊的处理,也没有针对不同的浏览器运行不同的代码。我搜索了我的项目的源代码,并且根本没有看到任何“gzip”的提及,所以我没有看到我可能会不小心沾上它。
我怎样才能找出为什么IIS不发送gzip的数据到IE?
重要吗?IE用户习惯于减慢加载页面的速度,因此额外的秒数不会产生任何影响。哦,这属于ServerFault。 :) – 2011-01-24 22:41:59