http2優缺點?
優點
2.1 多路復用
多路復用 (Multiplexing):多路復用允許同時通過單一的 HTTP/2 連接發起多重的請求-響應消息。
也就是說一個TCP連接可以一次發送和接受多個請求拉。
這樣實際上就避免了突發性和短時性的HTTP連接性能差的問題了(因為TCP協議里面有慢啟動,開始都很慢的).
2.2 二進制分幀
就是多加了一層,專門將消息分成了更小的二進制編碼的幀。減少了傳輸量。
2.3 首部壓縮
新的壓縮算法,減小首部大小,提升發送效率。
2.4 服務推送
客戶端請求一個資源,服務端把客戶端可能需要請求的其他資源一起主動發給它,減少了交互次數。另外服務端還能緩存這樣的資源,提升效率。
缺點
1. http2是基于tcp協議的,tcp協議在設計之初并非是以現在優質、高帶寬的網絡基礎設施基礎上設計的,他充分考慮了數據的可靠性,顯得小心謹慎,在傳輸速率的表現,也已經跟不上現時的網絡基礎設施。未來是否有更優化的網絡層協議發展出來,可以拭目以待,包括像基于udp協議的QUIC協議。個人認為下層協議還是由os內核來實現比較好,QUIC協議實現在應用層而非操作系統的內核層,始終是一個軟肋。
2. 大部分的http2實現和應用(包括瀏覽器和web服務器),事實上都必須基于TLS(SSL)安全套接層。對于一個承載互聯網內容的基礎協議來說,這樣的安全考量是合理的,也是必須的。有利就有弊,TLS的握手和數據加密過程必然給通信及通信雙方帶來一些負擔。這些負擔和額外的耗費,對于一些內部應用,比如說后端的微服務之間,有時候并不是必須的,是可以簡化的。
3. 由于現實世界已經基于http1建立起來,一些通訊鏈路上的基礎設施,比如說http代理,暫不能支持http2,因此這會對http2的鋪開造成阻礙,且這種阻礙可能是長期的過程。
4. 由于http2是二進制的,傳輸又是多路復用的,在不同幀的設計上考慮到了壓縮、優先級控制、流量控制、服務端推送,這導致http2的協議可以說比較復雜了。因此在協議的實現、應用的調試上將顯然會比簡單明文的http1增加一些難度。簡單和直觀,對于人類來說,具有天生的親和力。