2009-08-19 144 views
1

我試圖提供靜態資源(css和javascript)作爲緩存的gzip文件出於性能原因。爲什麼gzip的內容可能無法通過瀏覽器獲得原因

頁面在呈現時看起來是gzip,根據LiveHTTPHeaders將Content-Encoding正確設置爲gzip,最重要的是,gzip內容正在通過GIDZipTest頁面(http://www.gidnetwork.com/tools/gzip-test.php)。以下是測試輸出示例:

網頁壓縮?是

壓縮類型? gzip的

尺寸,標記(字節)18286

尺寸壓縮(字節)4427

壓縮%75.8

---- 

responseHeaders響應

狀態HTTP/1.0 200 OK

編譯無緩存緩存控制 私人,最大年齡= 86500

到期星期一,2009年8月24日四時34分14秒GMT

X-AMZ-ACL公衆閱讀

內容類型文本/ CSS

內容-MD5 hqJaTBS3OzDFet/QHsd +的Qg內容編碼==

gzip的

日星期三,2009年8月19日4時34分14秒GMT

服務器 - 我的服務器 -

內容長度4427

內容編碼標題爲黑體,並且所有其他標題都如預期。

測試頁面還顯示了未壓縮的頁面源代碼,它總是和我預期的那樣是未壓縮的,我甚至嘗試複製並粘貼它,以便由瀏覽器渲染,並且它可以工作,所以該問題必須在實際的步驟中認識到該頁面已被壓縮並解壓縮。

而這不是特定於瀏覽器的。在FF,Webkit和IE中,這些gzip文件沒有正確解壓縮。我嘗試了所有我能想到的,但我真的很難過。

+0

它是什麼服務器? – 2009-08-19 04:53:30

+0

你究竟是什麼意思*緩存gzipped文件*? – Gumbo 2009-08-19 10:28:52

回答

4

也許你有第二次gzipping文件的其他內容,但只適用於http-1.1客戶端,它將它列入accept-encoding,就像大多數瀏覽器一樣。 GIDZipTest正在發送http 1.0請求,並且由於http 1,gzipping對1.0客戶端有風險。0對於客戶端來說沒有接受編碼字段來指示它們支持哪種編碼,所以對於第二個壓縮器(如果有的話)不對1.0客戶端進行gzip是有意義的。如果是這樣的話,GIDZipTest會得到一個單壓縮響應,而瀏覽器會得到一個雙壓縮(壞)響應。但這只是一種可能性。罕見,但它發生。

如果不是這樣,那麼您應該提供更多信息,例如展示問題的網頁的網址。

+1

你是對的,我使用的是Google App Engine,並不知道它會自動gzip,所以通過gzip我是雙gzip文件。 – jamtoday 2009-08-19 20:02:12

0

我在過去的幾天裏調試過類似的問題。我項目中的所有html,css和js文件都是gzip格式的。它工作得很好,直到Firefox 3.5出現。 Firefox 3.0和IE 7 + 8沒有任何問題。哦,Opera 9 + 10和Chrome也因爲編碼而窒息。

症狀是html和css文件被正確識別,只有js文件有問題。螢火蟲給我此錯誤消息:

無效標籤

內容編碼:gzip \ n

對我來說,解決辦法是刪除文檔類型。我試過寬鬆和嚴格,都沒有效果。但我想知道什麼是適當的文檔類型。