DEFLATE不能在IE9中工作

我发布了堆栈溢出,但有人build议我可能在这里有更多的运气:

我之前没有使用deflate来对网页进行编码,所以这对我来说是新的,但是当我看着nework的stream量时,我的all.js文件现在是从427kb开始的117kb,所以我似乎在这里工作。 但IE9没有改变。 我的回应标题说内容编码:gzip在FF但不是IE9

这里是我的.htaccess:

<ifModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript </ifModule> 

请求IE9中的all.js的头文件:

  Key Value Request GET /all.js HTTP/1.1 Accept application/javascript, */*;q=0.8 Referer http://www.alexchapman.co.uk/ Accept-Language en-GB User-Agent Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0) Accept-Encoding gzip, deflate Host static.alexchapman.co.uk Connection Keep-Alive Cache-Control no-cache 

IE9中的all.js响应头:

 Key Value Response HTTP/1.1 200 OK Date Tue, 28 Feb 2012 15:53:41 GMT Server Apache/2 Last-Modified Tue, 28 Feb 2012 15:53:40 GMT Accept-Ranges bytes Cache-Control private Expires Fri, 02 Mar 2012 03:53:41 GMT Keep-Alive timeout=15, max=100 Connection Keep-Alive Transfer-Encoding chunked Content-Type text/javascript 

Firefox中的all.js请求标题:

 Accept: */* Accept-Encoding: gzip, deflate Accept-Language: en-gb,en;q=0.5 Cache-Control: no-cache Connection: keep-alive Cookie: DELETED - this should not be sent and isnt sent with IE Host: static.alexchapman.co.uk Pragma: no-cache Referer: http://www.alexchapman.co.uk/ User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2 

Firefox中all.js的响应标题:

 Accept-Ranges: bytes Cache-Control: private Connection: Keep-Alive Content-Encoding: gzip Content-Type: text/javascript Date: Tue, 28 Feb 2012 15:55:26 GMT Expires: Fri, 02 Mar 2012 03:55:26 GMT Keep-Alive: timeout=15, max=100 Last-Modified: Tue, 28 Feb 2012 15:55:26 GMT Server: Apache/2 Transfer-Encoding: chunked Vary: Accept-Encoding 

要清楚的是,这不仅仅是all.js发生的事情 – 我已经使用这个例子,因为它是从压缩中受益的最大的文件。 任何关于我在做什么错误的build议将不胜感激。

********** UPDATE ************

我的主机提供商已经回到我说,他们可以确认gzip和deflate都启用,并在我的网站上工作,他们已经表示,Internet Explorer的问题是特定于该浏览器,所以我build议尝试兼容模式,因为这是不是我们的服务器造成的。

我知道在IE浏览器兼容性的观点,这应该有助于正确渲染旧网站,所以我不知道他们在这里,我可以证实这对文件压缩没有任何区别。

我想到了这里正在发生的事情。 我下载了Wireshark并通过它检查了networkingstream量。 尽pipe如此,但我认为我已经得到了它 – 如果有人能证实我已经做到了这一点,那将是非常好的。

以文件all.js为例,我在firefox和IE9中跟踪了tcpstream的请求。 他们都说使用gzipencryption。 有趣的是,对话的总大小是不同的。 Ie9 – 268471字节FF-120812字节(均小于未压缩文件)。

这大概是在萤火虫报告正确的文件大小。 但是在IE develolper工具中报告的文件大小只有一半。 所以看起来不仅IE浏览器在gzip上更糟糕,而且开发者工具报告不正确,甚至比它更糟糕。 如果任何人可以validation这个结果或提出解释,我会接受他们的答案。

本身并不是一个“答案”,但mod_gzip对我来说很好(IE9也是如此)。 我的configuration:

 <IfModule gzip_module> mod_gzip_on Yes mod_gzip_item_include mime text/.* mod_gzip_item_include mime application/xm.* mod_gzip_item_include mime application/javascript mod_gzip_item_include mime image/svg.* mod_gzip_dechunk Yes </IfModule> 

Deflate和GZip几乎是一样的, gzip在技术上比较慢 ,但是在现代计算机上,在客户端可以安全地忽略差异,而在服务器端如果caching响应(dynamic生成的页面不可能)。

即使请求是gzip压缩,IE9也不会显示Content-Encoding: gzip头,因此在检查是否启用gzip压缩时,不要信任MSIE。

另外,要小心MSIE + TLS + gzip +分块传输编码组合,有一些错误,如: https : //support.microsoft.com/kb/871205