国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

http2-head compression

stormgens / 3069人閱讀

摘要:如今每個瀏覽器發起的請求都需要攜帶請求元數據,其中有用戶代理串,緩存指令,等等。如果頭鍵值對在請求之間無修改,那么傳遞的開銷為字節。這就是額外開銷的不易被察覺的驚人之處。

如今每個瀏覽器發起的請求都需要攜帶請求元數據,其中有用戶代理串,緩存指令,cookie等等。沒有壓縮的http head 經常需要幾K字節來承載才可以。

為了降低這個開銷,做了如下的改進

定義一個頭表(head table),在客戶端和服務器兩端都有,并用于跟蹤每次傳遞的鍵值對。

在整個連接期間,head table都持續存在,增量更新

每個鍵值對要么添加到存在的表內,要么修改之前的值

這樣做了之后,發送方就可以把當前發送的Request head和head table(上次的request head)對比,獲知兩者的差異,并且發送差異;接收方獲得差異,和自己方的head table比對,拼出完整的請求頭。

來個例子。

假設上次傳遞的http head:

 method:get
 path:/1
 scheme:https
 user-agent: curl/7.28.1
 host: www.gravatar.com
 Accept: */*

本次傳遞的http head:

 method:get
 path:/2
 scheme:https
 user-agent: curl/7.28.1
 host: www.gravatar.com
 Accept: */*

那么,在服務器和客戶端都在head table 中記錄了第一個請求的情況下,第二次請求只要發送一個多帶帶的path,兩端就可以解析出它本來的http head。

優化的效果下來,特別是對于公用的、在整個連接期間很少變化的鍵值對(user-agent,accept header..)只要傳遞一次。如果頭鍵值對在請求之間無修改,那么傳遞的開銷為0字節。

這就是http2引入head table的目的


對于某些應用來說,這些開銷會成為瓶頸,比如api驅動的web應用:

visit:

http://ip.jsontest.com/?callback=showMyIP

Requst header

GET http://ip.jsontest.com/?callback=showMyIP HTTP/1.1
Host: ip.jsontest.com
Proxy-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 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4,zh-TW;q=0.2
RA-Ver: 2.8.9
RA-Sid: DDED9CF3-20140806-053044-2b1b59-a2635f

query string:

callback=showMyIP

Response head:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Type: application/javascript; charset=ISO-8859-1
Content-Encoding: gzip
Vary: Accept-Encoding
Date: Mon, 23 Mar 2015 07:44:50 GMT
Server: Google Frontend
Cache-Control: private
Content-Length: 52
Alternate-Protocol: 80:quic,p=0.5,80:quic,p=0.5

Respone:

showMyIP({"ip": "45.56.92.8"});

作為Respone的json比起Header來說要小得多。

這就是額外開銷的不易被察覺的驚人之處。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/49564.html

相關文章

  • 180918-JDK之Deflater壓縮與Inflater解壓

    摘要:之壓縮與解壓解壓壓縮壓縮與解壓工具類在實際的應用場景中,特別是對外傳輸數據時,將原始數據壓縮之后丟出去,可以說是非常常見的一個了,平常倒是沒有直接使用原生的壓縮工具類,使用和的機會較多正好在實際的工作場景中遇到了,現在簡單的看下使用姿 title: 180918-JDK之Deflater壓縮與Inflater解壓tags: JDK categories: Java JDK dat...

    chemzqm 評論0 收藏0
  • 前端性能優化之gzip

    摘要:客戶端請求頭聲明瀏覽器支持的壓縮方式,服務端配置啟用壓縮,壓縮的文件類型,壓縮方式。建議設置成大于的字節數,小于可能會越壓越大。 背景 如果你是個前端開發人員,你肯定知道線上環境要把js,css,圖片等壓縮,盡量減少文件的大小,提升響應速度,特別是對移動端,這個非常重要。 壓縮 壓縮方式 前端壓縮的方式很多,依賴java的有ant工具,前端自己打包壓縮的有grunt,gulp,webp...

    張利勇 評論0 收藏0
  • 前端性能優化之gzip

    摘要:客戶端請求頭聲明瀏覽器支持的壓縮方式,服務端配置啟用壓縮,壓縮的文件類型,壓縮方式。建議設置成大于的字節數,小于可能會越壓越大。 背景 如果你是個前端開發人員,你肯定知道線上環境要把js,css,圖片等壓縮,盡量減少文件的大小,提升響應速度,特別是對移動端,這個非常重要。 壓縮 壓縮方式 前端壓縮的方式很多,依賴java的有ant工具,前端自己打包壓縮的有grunt,gulp,webp...

    Nino 評論0 收藏0
  • [LintCode] String Compression

    String Compression Implement a method to perform basic string compression using the counts of repeated characters. For example, the string aabcccccaaa would become a2b1c5a3. If the compressed string w...

    Cruise_Chan 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<