2011-01-24 1 views
0

Win7 x64 상자에서 Internet Explorer 8, Firefox 3.6, Chrome 8 및 IIS 7.5를 사용합니다.헤더가 있다고해도 헤더와 함께 IE에서 gzip을 사용하지 않습니다.

IHttpHandler (.NET 4)를 사용하여 파일을 제공하고 있습니다.

피들러에 따르면, IE8에서 내 IIS 요청은 GZIP을 받아 말한다, 그러나 그것은 반환되지 않습니다

 
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 

헤더가 반환 (즉 loc.portal.com 실제로 127.0.0.1입니다 주) 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 

gzipped가 아닙니다. 파이어 폭스와

그러나 요청은 다음과 같습니다

 
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 

크롬이 파이어 폭스 비슷합니다. gzip을 요청하고 gzip이 반환됩니다. Fiddler에 표시되는 콘텐츠 크기로 볼 때 Chrome과 Firefox에서는 본문이 실제로는 gzip되지만 IE에서는 그렇지 않은 것을 볼 수 있습니다.

IIS에서 설정 한 "동적 콘텐츠 압축 사용"(정적 콘텐츠 압축은 물론)이 있습니다. 내 IHttpHandler는 압축과 관련하여 특별한 작업을 수행하지 않으며 다른 브라우저에 대해 다른 코드를 실행하지 않습니다. 나는 프로젝트의 출처를 수색했는데, 나는 "gzip"에 대한 언급을 전혀 보지 못했고, 내가 우연히 그걸로 엉망이 될 수있는 것을 보지 못했다.

IIS에서 gzipped 데이터를 IE로 보내지 않는 이유는 무엇입니까?

+0

중요합니까?IE 사용자는 페이지로드 속도를 늦추는데 사용되므로 여분의 초는 아무런 차이가 없습니다. 오, 이건 ServerFault에 속해 있습니다. :) –

+0

ServerFault ... 아마도. 그것은 ASP.NET 문제 및 개발 문제가 아닌 서버 문제 일 수있는 것 같습니다. "중요하니?"에 관해서는 : 솔직히 말하면, 그것은 이상한 행동을 이해하지 못하는 것을 미치게 만듭니다. :-) – mhenry1384

+0

예 IE는 나를 때로는 미치게 만듭니다 ... 나는 유일한 사람이 아니지만, 오늘보다 더 오래 알아요. 어쩌면 내 프로필 페이지의 약력이 도움이 될 것입니다. ; D –

답변

0

IE를 사용하여 요청할 때 context.Response.Filter == System.Web.HttpResponseStreamFilterSink가 표시됩니다. Firefox 또는 Chrome을 사용하여 요청하면 해당 컨텍스트가 표시됩니다 .Response.Filter == RadGZipStreamNet40. IIS "실패한 요청 추적"로그 *에 따르면 기본 제공 IIS 동적 압축은 전혀 실행되지 않습니다. 분명히 Telerik은 IE의 호출이 압축되어서는 안되며 다른 브라우저의 호출이 있어야한다고 결정합니다.

워드 프로세서에 따르면

RadCompression가 자동으로 감지하고 이러한 내용 응답 유형을 기대 요청을 압축합니다 응용 프로그램/x-www-form-urlencoded를 응용 프로그램/JSON 응용 프로그램/XML 응용 프로그램/원자 + XML (출처 : http://www.telerik.com/help/aspnet-ajax/radcompression.html)

다른 브라우저 RadCompress의 GZip으로 압축 그래서 그들은 무엇보다도 동의 "응용 프로그램/XML을"신고 응답. IE는 그러한 것들을 받아들이는 것을보고하지 않으므로 그렇게하지 않습니다.