HTTP/2 相比于 HTTP 1,大幅提升了 web 性能贺纲,減少網絡延遲航闺。
一、多路復用的單一長連接
- 單一長連接
在HTTP/2中猴誊,客戶端向某個域名的服務器請求頁面的過程中潦刃,只會創(chuàng)建一條TCP連接,即使這頁面可能包含上百個資源懈叹。 單一的連接應該是HTTP2的主要優(yōu)勢乖杠,單一的連接能減少TCP握手帶來的時延 。HTTP2中用一條單一的長連接澄成,避免了創(chuàng)建多個TCP連接帶來的網絡開銷胧洒,提高了吞吐量。 - 多路復用
HTTP2雖然只有一條TCP連接墨状,但是在邏輯上分成了很多stream卫漫。 HTTP2把要傳輸的信息分割成一個個二進制幀,首部信息會被封裝到HEADER Frame肾砂,相應的request body就放到DATA Frame,一個幀你可以看成路上的一輛車,只要給這些車編號列赎,讓1號車都走1號門出,2號車都走2號門出镐确,就把不同的http請求或者響應區(qū)分開來了粥谬。但是肛根,這里要求同一個請求或者響應的幀必須是有有序的,要保證FIFO的漏策,但是不同的請求或者響應幀可以互相穿插。這就是HTTP2的多路復用臼氨,是不是充分利用了網絡帶寬掺喻,是不是提高了并發(fā)度?
二储矩、頭部壓縮和二進制格式
http1.x一直都是plain text,對此我只能想到一個優(yōu)點感耙,便于閱讀和debug。但是持隧,現在很多都走https即硼,SSL也把plain text變成了二進制,那這個優(yōu)點也沒了屡拨。于是HTTP2搞了個HPACK壓縮來壓縮頭部只酥,減少報文大小(調試這樣的協議將需要curl這樣的工具,要進一步地分析網絡數據流需要類似Wireshark的http2解析器)呀狼。
三裂允、服務端推動Sever Push
這個功能通常被稱作“緩存推送”。主要的思想是:當一個客戶端請求資源X哥艇,而服務器知道它很可能也需要資源Z的情況下绝编,服務器可以在客戶端發(fā)送請求前,主動將資源Z推送給客戶端貌踏。
這個功能幫助客戶端將Z放進緩存以備將來之需十饥。