HTTP/2 淺析

目前越來越多的網(wǎng)站開始使用 HTTP/2搓劫,那么我們就需要加深一下對HTTP/2的了解

HTTP/2 相對于 HTTP/1.1 的優(yōu)勢

可以使用「Akamai 這個頁面」來直觀的感受一下兩者的區(qū)別。

多路復用

多路復用允許同時通過單一的 HTTP/2 連接發(fā)起多重的請求-響應消息橡羞。

在 HTTP/1.1 協(xié)議中 瀏覽器客戶端在同一時間,針對同一域名下的請求有一定數(shù)量限制谣旁。超過限制數(shù)目的請求會被阻塞秦陋。不同瀏覽器的限制數(shù)目也不盡相同。

由此產(chǎn)生的多種技術:

  • 多個靜態(tài)資源 CDN 域名
  • 雪碧圖 CSS Sprite
  • 內(nèi)嵌圖片 inline image

都是為了解決瀏覽器針對同一域名的請求限制阻塞問題导俘。

image.png

因此 HTTP/2 可以很容易的去實現(xiàn)多流并行而不用依賴建立多個 TCP 連接众旗,HTTP/2 把 HTTP 協(xié)議通信的基本單位縮小為一個一個的幀,這些幀對應著邏輯流中的消息趟畏。并行地在同一個 TCP 連接上雙向交換信息贡歧。

二進制分幀

在不改動 HTTP/1.x 的語義、方法、狀態(tài)碼利朵、URI 以及首部字段….. 的情況下, HTTP/2 是如何做到「突破 HTTP1.1 的性能限制律想,改進傳輸性能,實現(xiàn)低延遲和高吞吐量」的 ?

關鍵之一就是在 應用層(HTTP/2)和傳輸層(TCP or UDP)之間增加一個二進制分幀層绍弟。

二進制分幀.png

在二進制分幀層中技即, HTTP/2 會將所有傳輸?shù)男畔⒎指顬楦〉南⒑蛶╢rame),并對它們采用二進制格式的編碼 ,其中 HTTP1.x 的首部信息會被封裝到 HEADER frame樟遣,而相應的 Request Body 則封裝到 DATA frame 里面而叼。

HTTP/2 通信都在一個連接上完成,這個連接可以承載任意數(shù)量的雙向數(shù)據(jù)流豹悬。

在過去葵陵, HTTP 性能優(yōu)化的關鍵并不在于高帶寬,而是低延遲瞻佛。TCP 連接會隨著時間進行自我「調(diào)諧」脱篙,起初會限制連接的最大速度,如果數(shù)據(jù)成功傳輸伤柄,會隨著時間的推移提高傳輸?shù)乃俣劝砝А_@種調(diào)諧則被稱為 TCP 慢啟動。由于這種原因适刀,讓原本就具有突發(fā)性和短時性的 HTTP 連接變的十分低效秤朗。

HTTP/2 通過讓所有數(shù)據(jù)流共用同一個連接,可以更有效地使用 TCP 連接笔喉,讓高帶寬也能真正的服務于 HTTP 的性能提升取视。

總結(jié):

  • 單連接多資源的方式,減少服務端的鏈接壓力,內(nèi)存占用更少,連接吞吐量更大
  • 由于 TCP 連接的減少而使網(wǎng)絡擁塞狀況得以改善然遏,同時慢啟動時間的減少,使擁塞和丟包恢復速度更快
首部壓縮

HTTP/1.1并不支持 HTTP 首部壓縮贫途,為此 SPDY 和 HTTP/2 應運而生, SPDY 使用的是通用的 DEFLATE 算法待侵,而 HTTP/2 則使用了專門為首部壓縮而設計的 HPACK 算法丢早。

服務端推送

服務端推送是一種在客戶端請求之前發(fā)送數(shù)據(jù)的機制。在 HTTP/2 中秧倾,服務器可以對客戶端的一個請求發(fā)送多個響應怨酝。Server Push 讓 HTTP1.x 時代使用內(nèi)嵌資源的優(yōu)化手段變得沒有意義;如果一個請求是由你的主頁發(fā)起的那先,服務器很可能會響應主頁內(nèi)容农猬、logo 以及樣式表,因為它知道客戶端會用到這些東西售淡。這相當于在一個 HTML 文檔內(nèi)集合了所有的資源斤葱,不過與之相比慷垮,服務器推送還有一個很大的優(yōu)勢:可以緩存!也讓在遵循同源的情況下揍堕,不同頁面之間可以共享緩存資源成為可能料身。

一個常見的問題是:「如果客戶端早已在緩存中有了一份 copy 怎么辦?」
一個推薦的解決方案是衩茸,客戶端使用一個簡潔的 Cache Digest 來告訴服務器芹血,哪些東西已經(jīng)在緩存,因此服務器也就會知道哪些是客戶端所需要的楞慈。
瀏覽器客戶端可以通過一個連接發(fā)送少于 1K 字節(jié)的 Packets 給服務端幔烛,通知哪些是已經(jīng)在緩存中存在的。

部署HTTP/2

參考其他大神的文章:

如何使用 HTTP/2 提升性能

參考其他大神的文章:

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末囊蓝,一起剝皮案震驚了整個濱河市饿悬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌慎颗,老刑警劉巖乡恕,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件言询,死亡現(xiàn)場離奇詭異俯萎,居然都是意外死亡,警方通過查閱死者的電腦和手機运杭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門夫啊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人辆憔,你說我怎么就攤上這事撇眯。” “怎么了虱咧?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵熊榛,是天一觀的道長。 經(jīng)常有香客問我腕巡,道長玄坦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任绘沉,我火速辦了婚禮煎楣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘车伞。我一直安慰自己择懂,他們只是感情好,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布另玖。 她就那樣靜靜地躺著困曙,像睡著了一般表伦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上慷丽,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天绑榴,我揣著相機與錄音,去河邊找鬼盈魁。 笑死翔怎,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的杨耙。 我是一名探鬼主播赤套,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼珊膜!你這毒婦竟也來了容握?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤车柠,失蹤者是張志新(化名)和其女友劉穎剔氏,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體竹祷,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡谈跛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了塑陵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片感憾。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖令花,靈堂內(nèi)的尸體忽然破棺而出阻桅,到底是詐尸還是另有隱情,我是刑警寧澤兼都,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布嫂沉,位于F島的核電站,受9級特大地震影響扮碧,放射性物質(zhì)發(fā)生泄漏趟章。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一芬萍、第九天 我趴在偏房一處隱蔽的房頂上張望尤揣。 院中可真熱鬧,春花似錦柬祠、人聲如沸北戏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嗜愈。三九已至旧蛾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蠕嫁,已是汗流浹背锨天。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留剃毒,地道東北人病袄。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像赘阀,于是被迫代替她去往敵國和親益缠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容