2009-08-06 130 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 

參考文獻

相關問題