HTTP 2,月薪30K

前端曉梅 2021-09-19 18:07:44 阅读数:249

http 月薪 30k

HTTP 2,月薪30K_Web

[](

)02 多路複用

HTTP 1.0的模式是,建立連接請求數據完畢之後就立即關閉連接;後來采用了keep-alive保活模式使得可以複用連接不斷開,可以利用這次連接繼續請求數據。但是始終會有一個缺點,就是你必須等待服務器返回上一次的請求數據你才可以進行下一次的請求。

萬一我們遇到有一個請求很久都不返回數據,那後面的請求只能繼續等待。如何解决這個問題呢?HTTP 2.0就提出了多路複用的技術,就是你可以連續發送多個請求,可以不用收到回複就繼續發送請求。

HTTP 2,月薪30K_前端_02

多路複用的優點:

  • 並行交錯發送請求,請求之間互不影響

  • TCP連接一旦建立可以並行發送請求

  • 消除不必要延遲,减少頁面加載時間

  • 可以最大程度利用HTTP 1.x

[](

)03 首部壓縮

HTTP 1.x首部是沒有壓縮的,Gzip只會對請求體進行壓縮,現在HTTP 2.0 提供了首部壓縮方案。現在SPDY和HTTP 2.0都支持首部壓縮,前者使用的是DEFLATE算法,而後者使用專門設計的HPACK算法。

HTTP 2,月薪30K_程序員_03

首部壓縮可以使得頭部幀可以最大程度複用,减少頭部的大小,有利於减少內存和流量。比如我們第一次發送請求,裏面包含頭部的各種信息;但是後來我們又發送另外的請求,發現大部分的字段是可以複用的,我們只要發送一個當前請求特有的頭部幀即可。由於首部錶在HTTP 2.0 的連接存續期內始終是有效的,客戶端和服務端共同更新。

[](

)04 流量控制

HTTP 2.0 “流” 的流量控制最終的目標是在不改變協議的情况之下允許采用多種流量控制算法。

流量控制特點:

  • 流量基於HTTP連接的每一跳進行,非端到端控制

  • 流量基於窗口更新幀進行,接收方可廣播准備接收字節數甚至對整個連接要接收的字節數

  • 流量控制有方向性,接收方可以根據自身情况進行控制窗口大小

  • 流量控制可以由接收方禁用,包括個別流和整個連接

  • 只有DATA幀服從流量控制,其他類型幀不會消耗控制窗口的空間

[](

)05 請求優先級

客戶端可以通過在打開流的HEADERS幀中包含優先次序信息來為一個新流指定優先級。在其它任意時間,可以使用PRIORITY幀來改變流的優先級。每個流都可以帶有一個31bit的優先值:0錶示最高優先級;2的31次方-1錶示最低優先級。

客戶端明確指定優先級,服務端可以根據這個優先級作為交互數據的依據,比如客戶端優先設置為.css>.js>.jpg。服務端按此順序返回結果更加有利於高效利用底層連接,提高用戶體驗。然而,在使用請求優先級時應注意服務端是否支持請求優先級,是否會引起隊首阻塞問題,比如高優先級的慢響應請求會阻塞其他資源的交互。

服務器可以根據流的優先級控制資源分配(CPU、內存、寬帶),而在響應數據准備好之後,優先將最高優先級的幀發送給客戶端。瀏覽器可以在發現資源時立即分派請求,指定每個流的優先級,讓服務器决定最優的響應次序。這樣請求就不用排隊了,既節省了時間,又最大限度的利用了每個連接。

[](

)06 服務器推送

一般HTTP請求都是由客戶端發起,服務器收到請求進行返回。但是HTTP 2.0 可以使**服務器主動返回資源**給客戶端用戶。比如前端請求 /index.html 資源,但服務器把 /index.css , index.png 都返回了。這樣就可以提高了性能。

服務器推送工作過程:

  • PUSH_PROMISE幀是服務端有意向客戶端推送資源

  • PUSH_PROMISE幀只包含預推送資源的首部。如果客戶端對此幀沒有意見,服務端就會發送DATA幀響應。假如客戶端緩存了可以拒絕推送。

  • 服務器遵守同源策略,不會隨意推送第三方資源。

那麼服務器怎麼知道要給客戶端推送什麼資源呢?


location / {
root /usr/share/nginx/html;
index index.html index.htm;
http2_push /style.css;
http2_push /example.png;
}

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

學習分享,共勉

題外話,畢竟我工作多年,深知技術改革和創新的方向,Flutter作為跨平臺開發技術、Flutter以其美觀、快速、高效、開放等優勢迅速俘獲人心

 CodeChina開源項目:【大廠前端面試題解析+核心總結學習筆記+真實項目實戰+最新講解視頻】

HTTP 2,月薪30K_程序員_04

版权声明:本文为[前端曉梅]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/09/20210919180744179b.html