首頁  >  文章  >  http2.0與http1.1區別

http2.0與http1.1區別

(*-*)浩
(*-*)浩原創
2019-06-03 11:04:138328瀏覽

什麼是HTTP 2.0?

HTTP/2(超文本傳輸協定第2版,最初命名為HTTP 2.0),是HTTP協定的第二個主要版本,使用於萬維網。 HTTP/2是HTTP協議自1999年HTTP 1.1發布後的首個更新,主要基於SPDY協議(是Google開發的基於TCP的應用層協議,用以最小化網絡延遲,提升網絡速度,優化用戶的網絡使用體驗)。

http2.0與http1.1區別

與HTTP 1.1相比,主要差異包括:

HTTP/2採用二進位格式而非文字格式

HTTP/2是完全多路復用的,而非有序且阻塞的-只需一個連接即可實現並行

使用標頭壓縮,HTTP/2降低了開銷

HTTP/2讓伺服器可以將回應主動「推送」到客戶端快取中

推薦課程:PHP教學

HTTP/2為什麼是二進位?

比起像HTTP/1.x這樣的文字協議,二進位協議解析起來更有效率、「線上」更緊湊,更重要的是錯誤更少。

為什麼HTTP/2 需要多路傳輸?

#HTTP/1.x 有個問題叫線端阻塞(head-of-line blocking) , 它是指一個連線(connection)一次只提交一個請求的效率比較高, 多了就會變慢。 HTTP/1.1 試過用管線(pipelining)來解決這個問題, 但是效果並不理想(資料量較大或速度較慢的回應, 會阻礙排在他後面的請求). 此外, 由於網路媒介(intermediary )和伺服器不能很好的支援流水線, 導致部署起來困難重重。而多路傳輸(Multiplexing)能很好的解決這些問題, 因為它能同時處理多個訊息的請求和回應; 甚至可以在傳輸過程中將一個訊息跟另外一個摻雜在一起。所以客戶端只需要一個連線就能載入一個頁面。

訊息頭為什麼需要壓縮?

假定一個頁面有80個資源需要載入(這個數量對於今天的Web而言還是挺保守的) , 而每一次請求都有1400字節的消息頭(著同樣也並不少見,因為Cookie和引用等東西的存在), 至少要7到8個來回“在線”獲得這些消息頭。這還不包括回應時間——那隻是從客戶端獲取到它們所花的時間而已。這全都由於TCP的慢啟動機制,它會基於對已知有多少個包,來確定還要來回獲取哪些包 – 這很明顯的限制了最初的幾個來回可以發送的數據包的數量。相較之下,即使是頭部輕微的壓縮也可以是讓那些請求只需一個來回就能搞定——有時甚至一個包就可以了。這種開銷是可以被節省下來的,特別是當你考慮到行動用戶端應用的時候,即使是良好條件下,一般也會看到幾百毫秒的來回延遲。

伺服器推送的好處是什麼?

當瀏覽器要求網頁時,伺服器將會傳回HTML,在伺服器開始傳送JavaScript、圖片和CSS前,伺服器需要等待瀏覽器解析HTML並傳送所有內嵌資源的請求。伺服器推播服務透過「推送」那些它認為客戶端將會需要的內容到客戶端的快取中,以此來避免往返的延遲。

以上是http2.0與http1.1區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn