天天看點

HTTP2.0簡介

上一篇文章和大家一起聊了HTTP的發展,從0.9時代到1.1時代,1.1做了不少的改進,但依然不能滿足我們的需求,是以繼續2.0協定

1.1中做的優化大緻有下面幾個:

  • 增加持久連接配接,不用每次都進行TCP的三次握手,提高了效率
  • 浏覽器為每個域名同時維持6個持久連接配接
  • 使用CDN實作域名分片機制

使用這些優化之後大大提高了浏覽器的運作速度

HTTP/1.1 存在的問題

http/1.1對帶寬的使用率比較低,帶寬是指每秒最大的發送或者接收的位元組數,發送的最大位元組稱為上行帶寬,下載下傳的最大位元組數稱為下行帶寬

使用率較低的原因主要有以下幾個原因:

1 TCP啟動較慢

一個TCP建立了連接配接之後,就進入了發送階段,剛開始的一段時間發送的較慢,平穩的加速直到達到一個理想狀态,這叫TCP的慢啟動,發送小檔案的時候,顯然慢啟動耽誤的時間所占比例較大,影響首頁渲染時間

2 同時開啟多條TCP連接配接,那麼這些連接配接存在競争帶寬的現象

如果開啟了多個TCP連接配接,那麼有些較慢的連接配接肯定會搶占帶寬資源,而此時比較重要的檔案如HTML,CSS檔案等就會受影響,導緻被不太重要的圖檔或者視訊資源占據了寶貴的帶寬

3 HTTP/1.1隊頭阻塞

HTTP使用持久連接配接時,共用一個TCP管道,但是同一時間隻能處理一個請求,目前的請求沒有結束之前,其他的請求都處于阻塞狀态

HTTP/2.0 多路複用

多路複用的思路是:一個域名使用一個長連接配接,這樣就減小了慢啟動的問題,也避免了多個連接配接搶占帶寬的問題。

另外一個嚴重的問題是隊頭阻塞的問題,HTTP/2.0還需要實作資源的并行下載下傳,即各自互不影響,不需要等待其他請求的完成

是以2.0的思路是一個域名隻使用一個長TCP連接配接,并且消除隊頭阻塞問題

HTTP/2.0其他特性

1、可以設定請求優先級,在發送請求時,标注上該請求的優先級,伺服器接收到請求之後會優先處理優先級較高的請求

2、伺服器推送,例如伺服器會知道哪個HTML檔案依賴哪個CSS檔案,這樣請求HTML檔案的時候會主動将CSS檔案推送給浏覽器

3、頭部壓縮,可以整體将請求頭壓縮,然後經過二進制分幀層處理,将每個請求加上ID編号和優先級,一起發送

繼續閱讀