2012-09-11 387 views
6

我在這裏有一個很大的JavaScript文件,我想嵌入到我的網站。 HTTP服務器足夠智能,可在將文件傳送到瀏覽器之前對其進行GZIP處理。爲什麼Safari不接受GZIP壓縮?

但是,我使用Google Chrome和Safari進行了測試。

在Chrome上,它工作得很好。 400K下去壓縮到100k左右:

first

second

在Safari上壓縮不起作用:

third

fourth

有趣日ing是,在gz2b.png中,您可以清楚地看到內容編碼設置爲「gzip」。


注:我已經在Safari中存在的GZIP,臭蟲,文件不能的「廣州」結束或Safari不會接受GZIP讀了。由於我的文件不會以.gz結尾,因此這個問題不應該成爲問題。

+0

您在safari上獲得的請求標題表示內容爲GZIP,其長度爲119406字節。你確定你使用的工具告訴你事實真相嗎? – nos

+0

@nos這是相同的工具。我只是使用兩個瀏覽器內置的Web檢查器。 – Timo

+0

@nos你說得對。 Wireshark清楚地顯示該文件比原始大小小很多。如果你想發表你的評論作爲答案,我很樂意將其標記爲「正確的答案」。 – Timo

回答

7

發送到Safari的HTTP標頭聲稱它是壓縮的(它具有Content-Encoding:gzip標頭,它表示內容長度爲119406字節) - 我相信那些比粗體數字更多的詞430.61在Web Inspector中。它如何確定頂欄中的這兩個數字,我不知道。

如果使用wireshark嗅探HTTP請求,您可以驗證有多少字節會通過線路傳輸。

9

我也遇到過這個問題,同時試圖優化iOS7 Safari移動iPad上的網站加載時間。

  • 編碼=未壓縮的文件大小,從服務器
  • 解碼=未壓縮的文件大小,局部地
  • 轉移=未壓縮文件大小+報頭的發送和接收
  • 的Content-Length =壓縮文件發送,從服務器

Safari選擇了一種非常奇怪的方式來在調試器中表示這些數字。

1

這是一段時間以前,但我只是遇到了一個非常類似的問題,或者可能是這個問題的根源。當你用gzip壓縮的數據對於Safari瀏覽器這樣的:

gzip jquery.min.js 

你會最終有一個jquery.min.js.gz時改名爲將在Safari中失敗,即使正確指定爲gzip的編碼文件流和也jquery.jgz在很多關於這個問題的其他線程中都提到過。這似乎是因爲文件名是在gzip文件中編碼的。

如果編碼gzip文件是這樣的:

cat jquery.min.js | gzip > jquery.jgz 

然後,你將有一個文件,該文件是幾個字節較小,不會在Safari工作得很好。