Http2, HTTP1.1 知識點收集

參考地址:html

  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 都只能發送對應生命週期內的某些幀數據。tcp

4,優化點:ide

  •     開啓壓縮 配置 gzip 等可使傳輸內容更小,傳輸速度更快
  •  使用緩存 
  •  CDN 加速 
  •  減小 DNS 查詢
  •  減小重定向
相關文章
相關標籤/搜索