HTTP壓縮

zzz紫川發表於2016-12-18

HTTP的壓縮過程如下:

1、瀏覽器傳送HTTP Request給Web伺服器,Request中含有Accept—Encoding:gzip,deflate(告訴伺服器支援的壓縮格式);

2、Web伺服器接到Request後,生成原始的Response,其中有原始的Content—Type和Content—Length;

3、伺服器通過Gzip對Response進行編碼,編碼後header中含有Content—Type和Content—Length(壓縮後的大小),並且增加了Content—Encoding:gzip,然後把Response傳送給瀏覽器;

4、瀏覽器接到Response後,根據Content—Encoding:gzip來對Response進行解碼,獲取到原始的Response後顯示在網頁上。

如圖:(唉,鼠繪的技能沒點,電腦也沒裝畫圖軟體,將就點看這個圖吧):

補充一點關於壓縮的東西:

1、Content—Encoding值:

  a)、gzip           表明實體採用GNU Zip編碼

  b)、compress   表明實體採用Unix的檔案壓縮程式

  c)、deflate       表明實體是用zlib的格式壓縮的

  d)、identity      表明沒有對實體進行編碼,當沒有Content—Encoding Header時,預設為這種情況

2、gzip,compress以及deflate編碼均為無失真壓縮演算法,其中gzip通常效率最高,使用最為廣泛

3、壓縮的好處:提高效能

Gzip的缺點:JPEG此類檔案用gzip壓縮的不夠好

Gzip如何壓縮:在一個文字檔案中找出類似的字串,並臨時替換它們,使整個檔案變小,這種形式的壓縮對Web來說非常適合。因為HTML和CSS檔案通常包含大量的重複的字串,例如空格、標籤等。

4、瀏覽器不會自動對Request進行壓縮,但一些HTTP程式在傳送Request時間,會對其編碼。

  eg:Header中的Transport下Content—Encoding:X—Syzygy

 

相關文章