成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

http2-head compression

stormgens / 3115人閱讀

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

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

為了降低這個(gè)開銷,做了如下的改進(jìn)

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

在整個(gè)連接期間,head table都持續(xù)存在,增量更新

每個(gè)鍵值對要么添加到存在的表內(nèi),要么修改之前的值

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

來個(gè)例子。

假設(shè)上次傳遞的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: */*

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

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

這就是http2引入head table的目的


對于某些應(yīng)用來說,這些開銷會成為瓶頸,比如api驅(qū)動的web應(yīng)用:

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來說要小得多。

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/49564.html

相關(guān)文章

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

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

    chemzqm 評論0 收藏0
  • 前端性能優(yōu)化之gzip

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

    張利勇 評論0 收藏0
  • 前端性能優(yōu)化之gzip

    摘要:客戶端請求頭聲明瀏覽器支持的壓縮方式,服務(wù)端配置啟用壓縮,壓縮的文件類型,壓縮方式。建議設(shè)置成大于的字節(jié)數(shù),小于可能會越壓越大。 背景 如果你是個(gè)前端開發(fā)人員,你肯定知道線上環(huán)境要把js,css,圖片等壓縮,盡量減少文件的大小,提升響應(yīng)速度,特別是對移動端,這個(gè)非常重要。 壓縮 壓縮方式 前端壓縮的方式很多,依賴java的有ant工具,前端自己打包壓縮的有g(shù)runt,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

發(fā)表評論

0條評論

閱讀需要支付1元查看
<