2017-05-08 43 views
8

我向cloudfront CDN發出請求並看到非常令人沮喪的行爲。在Chrome和Firefox中,請求通過了正確的accept-encoding:gzip, deflate標題。Safari沒有通過accept-encoding:gzip,deflate

但是,safari不會這樣做,從而獲得文件的未壓縮版本。這是HTML文檔中的一個簡單腳本標記。所以我無法設置標題。

同一文檔產生具有下面的頭/瀏覽器的請求的連擊

的Safari頭

-H '緩存控制:最大年齡= 0' \ -H「的If-Modified - 由於:星期一,2017年5月8日18時01分40秒格林尼治標準時間 '\ '

鉻頭

:方法:GET :路徑:/main-b54b8739d65dfbd36152.js :方案:HTTPS 接受:/ 接受編碼:gzip,緊縮,SDCH,BR 接受語言:EN-US,EN; q = 0.8 緩存控制:無緩存 雜注:無緩存

此外,相應的web檢查員提供額外的信息,在Safari,Safari Screen shot

而在鉻, enter image description here

此外,該請求在safari中花費的時間延長了3倍。大約是55毫秒的鉻和150毫秒的safari。

我遺漏了一些信息來保護我的隱私。謝謝您的幫助!

+0

我想盡管Safari並沒有在請求中發送這個頭文件,但大多數(如果不是所有的話)服務器仍然會使用gzip編碼的內容,因爲現在這是標準的。我剛剛證實了這一點,儘管請求中沒有「accept-encoding」頭,但我確實收到了「content-encoding:gzip」的回覆。但是有很多情況會阻止服務器使用壓縮。另外,不要只信任Safari的開發工具報告通過網絡傳遞的大小。 (作爲評論,因爲它只是模糊的跡象,而不是一個經過深入研究的答案)。基本上:你確定嗎? :) –

+0

@HuguesMoreau我已經添加了一些額外的細節,並很樂意提供更多信息。 – dandlezzz

+0

我不認爲問題是壓縮。你應該看的是Compressed:是的。這意味着壓縮被用於傳輸。但壓縮率和大小似乎在Safari中被打破。甚至請求標題也被誤報。對於蘋果公司的辯護,我很久以前就調試過壓縮,並發現所有瀏覽器都以某種方式誤報了壓縮的使用。但這並沒有多大幫助。如果你能控制服務器,我建議在服務器端記錄Accept-Encoding頭和響應大小(訪問日誌通常有助於後者)。 – Seva

回答

3

Safari在其開發人員工具中使用了不同的命名約定,這與您的觀察結果一致。從this answer引用,

[1] Encoded = uncompressed filesize, from server 
[2] Decoded = uncompressed filesize, locally 
[3] Transferred = uncompressed file size + headers sent and received 
[4] Content-Length = compressed file sent, from server 

請檢查content-length屬性,看它是否真的壓縮。