開啟gzip 如果瀏覽器端不支持解壓 頁面會怎麼樣?

要做webapp 移動端優化,我想到用gzip,但是之前沒用過,怕出問題

所以有一下問題

如果我在服務端開啟了gizp

但是瀏覽器不支持,頁面會怎麼樣了

是按原來的大小傳輸數據

還是頁面解析不了 就顯示空白

我看了下http://m.taobao.com

支持gzip的就是壓縮後的

不支持gzip的就是按原大小傳輸數據的

不知道他們是怎麼做的


支持gzip的瀏覽器會通過HTTP頭告訴伺服器,如Accept-Encoding: gzip。伺服器看到這個才返回gzip的內容。這是HTTP協議的規定。具體可以看RFC-2616。


GET /question/25871199 HTTP/1.1

Host: http://www.zhihu.com

Connection: keep-alive

Cache-Control: max-age=0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36

Referer: http://www.zhihu.com/

Accept-Encoding: gzip,deflate,sdch

Accept-Language: zh-CN,zh;q=0.8,en;q=0.6

Cookie: cookie不給看

看倒數第三行。


如果瀏覽器不支持 Gzip,則在請求頭中不會包含「Accept-Encoding」,或是包含「Accept-Encoding」頭,但是內容不包含 gzip。

伺服器如果檢測到瀏覽器不支持 gzip,按照規定就不應該對內容進行壓縮,或是使用「Accept-Encoding」中給出的其他支持的演算法進行壓縮。

如果伺服器使用了壓縮,那麼必須在響應頭中包含「Content-Encoding」頭表明內容使用的壓縮方式。

如果瀏覽器不支持 gzip,或是伺服器使用 gzip 壓縮了卻沒有加「Content-Encoding」頭,那麼將會出現問題:分兩種情況,具體看瀏覽器實現。

1、由於指定了「Content-Type」(絕大多數都是文本型,比如網頁/js/css),所以瀏覽器會以純文本的形式直接顯示壓縮過的二進位數據,也就是出現全屏亂碼。

2、如果沒有指定「Content-Type」,或是部分瀏覽器會檢測出響應的內容與「Content-Type」指定的不同,並且為二進位內容,則會彈出下載的提示,讓你下載這個文件。


只要是正規瀏覽器完全不會有影響。


推薦閱讀:

盲人是如何瀏覽網頁的
有哪些實用且堪稱神器的Chrome插件?
Firefox 50.0 正式版用戶特性介紹
最近「幽靈」和「熔斷」兩組 CPU 晶元漏洞對普通用戶有什麼影響嗎?
微軟有多大可能在 Windows 10 裡面用 Spartan 代替 IE 瀏覽器,為什麼要作更改,會有哪些變化?

TAG:網頁瀏覽器 | gzip |