Http2, HTTP1.1 知識點收集

參考地址:

  1. https://blog.wangriyu.wang/2018/05-HTTP2.html
  2. https://www.jianshu.com/p/e57ca4fec26f

1, HTTP/1.1 存在的問題

  •     TCP 連接數限制
  • 線頭阻塞 (Head Of Line Blocking) 問題
  • Header 內容多,而且每次請求 Header 不會變化太多,沒有相應的壓縮傳輸優化方案
  • 明文傳輸不安全。
  • 爲了儘可能減少請求數,需要做合併文件、雪碧圖、資源內聯等優化工作

2,Http2.0 特點:

  •     二進制分幀層 (Binary Framing Layer)(response 頭字段均小寫)
  •  多路複用 (MultiPlexing)  在一個 TCP 連接上,每幀的 stream identifier 的標明這一幀屬於哪個流,然後在對方接收時,根據 stream identifier 拼接每個流的所有幀組成一整塊數據。 流的概念實現了單連接上多請求 - 響應並行,解決了線頭阻塞的問題,減少了 TCP 連接數量和 TCP 連接慢啓動造成的問題。
    • http2 對於同一域名只需要創建一個連接
  • 服務端推送 (Server Push) 瀏覽器發送一個請求,服務器主動向瀏覽器推送與這個請求相關的資源,這樣瀏覽器就不用發起後續請求。【省略後後續的get 時間
  • Header 壓縮 (HPACK)  使用 HPACK 算法來壓縮首部內容
  •  應用層的重置連接 

    HTTP/1 來說,是通過設置 tcp segment 裏的 reset flag 來通知對端關閉連接的。這種方式會直接斷開連接,下次再發請求就必須重新建立連接。HTTP/2 引入 RST_STREAM 類型的 frame,可以在不斷開連接的前提下取消某個 request 的 stream。

  •  請求(流的)優先級設置

  •  

     流量控制 

 

3, 流的狀態:idle  reserved(local & remote ) open half-closed(local & remote ) closed;   以上也是流的生命週期。 其中reserved 都只能發送對應生命週期內的某些幀數據。

4,優化點:

  •     開啓壓縮 配置 gzip 等可以使傳輸內容更小,傳輸速度更快
  •  使用緩存 
  •  CDN 加速 
  •  減少 DNS 查詢
  •  減少重定向

    

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章