Content-Encoding是HTTP協定的響應封包頭,一般形式如:Content-Encoding:gzip,deflate,compress
Content-Encoding在說明中指出deflate指的是在RFC1950說明的zlib格式,也就是說當Content-Encoding為deflate時,内容應該為zlib格式。
compress據說chrome浏覽器支援,但還沒見到哪個web伺服器支援
gzip,deflate,zlib的關系:
deflate(RFC1951):一種壓縮算法,使用LZ77和哈弗曼進行編碼;
zlib(RFC1950):一種格式,是對deflate進行了簡單的封裝;
gzip(RFC1952):一種格式,也是對deflate進行的封裝.
可以看出deflate是最核心的算法,而zlib和gzip格式的差別僅僅是頭部和尾部不一樣,而實際的内容都是deflate編碼的,即:
gzip = gzip頭(10位元組) + deflate編碼的實際内容 + gzip尾(8位元組)
[GZIP的實作可參考GzipOutputStream.java]
zlib = zlib頭 + deflate編碼的實際内容 + zlib尾
部分網際網路頁,響應封包含有gzip頭,部分沒有,gzip都能較好支援,有無gzip頭都沒有問題。
對deflate的zlib格式:
在IE上面是打不開頁面的,包括IE6,IE7,IE8,提示為一片空白或者出錯,但是在其他的浏覽器如Firefox,Chrome,Opera等都能正常打開。
要讓IE能夠正常打開頁面,内容必須是deflate原始格式的資料,即去掉zlib頭和zlib尾。