2009-08-06 132 views
5

我的网站是gzipped压缩的,它在IE中无法正确加载。它在FF/Chrome中可以正常工作,但在IE中,弹出的唯一方法是请求下载包含该页面的html文档的.gz文件。为什么使用Internet Explorer进行gzip压缩不起作用?

这是正常的吗?我必须关闭gzip吗?

+1

哪个版本的Internet Explorer? – Mez 2009-08-06 22:24:33

+0

IE 7.未在6或8上测试过 – chris 2009-08-06 22:31:58

回答

16

您发送正确的标题吗?

您需要发送的

Content-Encoding: gzip 

头的IE浏览器,以了解它是gzip压缩(火狐,等有足够的智慧自动检测这一点 - 即使他们不应该!)

在PHP中,你可以使用这样做: -

header('Content-Encoding: gzip'); 
+3

标题(“Content-Encoding:gzip”); – danamlund 2009-08-06 22:21:50

+0

感谢有帮助的人 – chris 2009-08-06 23:58:29

+7

“自动检测这个”是不合法的。 – EricLaw 2010-07-30 18:35:48

0

在其上有闪光的网页上使用gzip与Internet Explorer时,我已经看到了问题。如果你的网页有闪光,这可能是为什么。我不记得原因,当时我们发现它是在现场造成问题,所以我们只是禁用Internet Explorer的gzip来解决它。

+1

这是一个有效的评论,IE6如果它看到“Vary”头和Content-Encoding一样是gzip,它将无法检索完整的响应。 – shivaspk 2013-01-15 08:11:11

7

要添加一件事 - 您应该关闭IE6 SP2之前的gzip压缩。在SP2之前,IE6并不总是正确读取和缓存gzip内容,并最终导致代码损坏。

您可以通过在用户代理字符串中查找“SV1”来识别IE6 SP2安装。

0

HTTP头是问题。如果你有以下的一个沿gzip头:

  • 因人而异
  • 传输编码:分块

一个或两个需要被删除。

由于Apache HTTP Server可以在任何类型的文件上使用分块编码,因此运行Apache HTTP Server的计算机上可能会出现此问题。这包括静态文件,如JavaScript文件或.gif文件。当本文中描述的问题发生时,存储在Internet Explorer缓存中的内容可能会被截断或损坏。

对于XML,XHTML和XSLT文件,防止解析为text/html或文本/ XSL:

RewriteCond %{HTTP_ACCEPT} text\/html [OR] 
    RewriteCond %{HTTP_ACCEPT} text\/xsl [OR] 
    RewriteCond %{HTTP_ACCEPT} gif|jpeg|png$ 
    ReWriteRule .*\.(xsl|xslt)$ - [F] 

并添加application/xml作为内容类型映射:

AddType application/xml .xsl 

参考文献

相关问题