深入了解 HTTP/2:它的工作原理及其對 Web 的意義

已發表: 2023-02-09

2015 年,新版 HTTP 網絡協議——HTTP/2 獲批。 現在,它變得越來越流行:該協議已經支持 Apache 和 Nginx Web 服務器、Chrome、Firefox、Opera、Edge 和 Safari 瀏覽器以及移動設備。

HTTP/2 服務和站點的數量在不斷增長。 在不久的將來,互聯網正在等待向新協議的過渡,從而加速網站下載。

讓我們看看這將如何影響網站建設、SEO 和其他方面。

目錄
什麼是 HTTP/2?
HTTP 和 HTTP 2 之間的區別
HTTP/2 的優缺點
為什麼世界需要 HTTP/2?
HTTP/2 真的更快嗎?
為什麼 HTTP/2 工作得更快?
為什麼加快網站頁面加載速度很重要?
如何實施 HTTP 2?
結論
經常問的問題

什麼是 HTTP/2?

http 2
HTTP 2

HTTP/1.1 協議從 1999 年開始使用,隨著時間的推移出現了一個重大問題。 與 1999 年流行的網站相比,現代網站使用了許多不同的元素:JavaScript 腳本、CSS 樣式,有時還使用 Flash 動畫。 當您傳輸所有這些時,瀏覽器和服務器會創建多個連接。

由於以下特性,HTTP/2 協議顯著加快了網站速度:

  • 連接:可以通過單個 TCP 連接發送多個請求,並且可以按任何順序接收響應。 無需保留多個 TCP 連接。
  • 線程優先級:客戶端可以設置服務器的優先級——什麼樣的資源對他來說比其他資源更重要。
  • 標頭壓縮:可以減小 HTTP 標頭的大小。
  • 服務端推送數據:服務端可以向客戶端發送尚未請求的數據,例如基於用戶將要打開的下一頁的數據。

HTTP 2 協議的開發基於 SPDY 協議,由 Google 開發。 但谷歌已經宣布,它將拒絕對更有前途的 HTTP/2 提供進一步的 SPDY 支持。

閱讀:為什麼您的 WordPress 網站速度很慢以及如何加快速度?

HTTP/2 的主要特性

  • 復用
  • 服務器推送
  • 標頭壓縮
  • 流優先級
  • 流量控制

HTTP 和 HTTP 2 之間的區別

對第一個協議所做的更改不需要對應用程序的工作方式進行很多更改。 雖然,新應用程序有一個優勢,可以提高速度。 下面比較了兩種協議之間的主要區別:

特徵HTTP HTTP2
句法高級語法相同高級語法相同
數據框架修改後的數據框架增強的數據框架
查詢有限查詢更多查詢
服務器響應反應有限增強的響應能力
高效網站最小化請求提高效率
隊首阻塞存在於 HTTP 中在 HTTP2 中克服
復用不存在展示
標頭壓縮不存在展示
請求優先級不存在展示
HTTP 和 HTTP/2 之間的區別

下面是 HTTP/1 和 HTTP/2 之間基本區別的良好直觀表示(由:http: //ruzhekov.com 提供)

nginx http/2
nginx http/2

HTTP/2 的優缺點

優點

  • 提高頁面加載速度
  • 更好地利用網絡資源
  • 提升用戶體驗
  • 更好地兼容現代網絡技術

缺點

  • 據說該協議不一致且複雜
  • 違反協議分層原則
  • 伴隨著沉重的加密成本
  • 與路由器等某些設備不兼容
  • 缺乏機會加密

為什麼世界需要 HTTP/2?

  • HTTP 於 1991 年首次被描述,其最新版本 HTTP/1.1 於 1999 年獲得批准,至今仍在使用。
  • 多年來,網站規模顯著增長,導致加載時間變慢,並限制使用 HTTP/1.1 的同時連接數。
  • 已經實施了優化網站負載等臨時解決方案,但它們僅提供短期解決方案。
  • 谷歌工程師於 2009 年開始著手改進該協議,最終創建了 SPDY 協議,該協議速度更快且受大多數瀏覽器支持,但需要服務器端支持。
  • HTTP/2 基於 SPDY 並向後兼容 HTTP/1.1。 沒有立即升級的需要,但最終,站點在舊協議上的加載速度可能會變慢。

HTTP/2 真的更快嗎?

HttpWatch Experts 進行了多項測試,發現 HTTP 2 的加速非常顯著。

下面的截圖顯示了使用 HTTP/1.1 的頁面下載速度:

http 2 ss1
HTTP 2 SS1

在這張截圖上——使用 HTTP 2 的結果:

http 2 ss2
HTTP 2 SS2

下載速度提高了 23%。 HttpWatch 專家還指出,該技術尚未完全優化,預計實際加速可達 30%。

為什麼 HTTP/2 工作得更快?

  • 在 HTTP/2(多路復用)中的同一連接內發送的多個請求導致更快地加載靜態元素
  • HTTP/2 中 HTTP 標頭的壓縮減少了服務器和瀏覽器之間的數據量,釋放了資源
  • 通過引領潮流的瀏覽器(Google Chrome、Mozilla Firefox)支持 HTTP/2 的加密連接提高了安全性
  • HTTP/2 中的優先級順序發生變化,優先級是正確多路復用功能的理想方法
  • HTTP/2 中缺少優先級配置會導致速度降低,因為稍後可以加載的資源將佔用單獨的條帶和一部分電源。

為什麼加快網站頁面加載速度很重要?

  • HTTP 2 支持不是 Google 的直接排名因素
  • 下載速度是谷歌的重要排名因素
  • HTTP/2 可以對網站速度產生積極影響,並因行為因素對排名產生積極影響
  • 更快的頁面具有更低的失敗率,並可能導致更高的用戶參與度
  • Google Bot 即將支持 HTTP/2
  • 隨著搜索引擎改變算法,HTTP 2 可能會成為未來的排名因素。

對 Web 開發人員的好處

HTTP 2 可以讓你擺脫老花樣,旨在加速沒有 HTTP/2 的頁面加載。 我們列出了:

  • 域分片或使用多個相關域下載文件以建立更多的 TCP 連接。
  • 圖片精靈——將圖片組合在一個文件中以減少請求數量。 但是,必須首先完全加載這樣的文件才能顯示。 此外,處理大文件會消耗更多內存。
  • 合併 CSS 和 JavaScript 文件,這樣做也是為了減少請求數,同時也增加了內存使用量。
  • 內聯包含或將 CSS 和 JavaScript,有時甚至是圖片放在 HTML 文件中,以減少連接數。 同時,直到加載整個文件後才顯示頁面。
  • 沒有 cookie 文件的域:從另一個沒有使用 cookie 的域下載圖像、CSS 和 JavaScript。

如何實施 HTTP 2?

要實現 HTTP 2,您需要執行以下步驟:

  1. 檢查服務器支持:確保您的服務器軟件支持 HTTP 2。Apache、Nginx 和 IIS 等流行的服務器軟件內置了對 HTTP 2 的支持。
  2. 啟用 HTTP 2:確認服務器支持 HTTP 2 後,您需要啟用它。 啟用 HTTP 2 的方法因您使用的服務器軟件而異。
  3. 使用 HTTPS: HTTP 2 需要使用 HTTPS 的安全連接,因此您需要在服務器上安裝 SSL 證書。
  4. 更新您的代碼:如果您正在使用處理 HTTP 連接的庫或框架,請確保它支持 HTTP 2。某些庫可能需要更新才能使用 HTTP 2。
  5. 測試您的網站:進行必要的更改後,測試您的網站以確保它適用於 HTTP 2。檢查瀏覽器控制台是否有任何錯誤或警告。
  6. 監控性能:定期監控您網站的性能,以確保它在 HTTP 2 下順暢運行。
  7. 考慮性能優化:實施 HTTP 2 將提高您網站的性能,但仍可能有進一步優化的機會。 例如,將圖像組合成精靈、壓縮圖像、減少 HTTP 請求的數量可以進一步提高性能。

結論

HTTP 2 向後兼容 HTTP 1.1,不需要遷移。 然而,由於網絡服務器和瀏覽器採用 HTTP 2,站點優化技術可能需要更新以避免降低網站速度。

閱讀: WordPress 中 HTTP 到 HTTPS 遷移的完整指南

將圖像合併到 sprite 中可以改善壓縮並減少數據下載,同時避免使用數據 URI 嵌入圖像可以改善緩存。 在 HTTP 2 中不再需要域分片,因為它允許直接請求資源並且可以通過創建額外的連接來降低性能。

經常問的問題

HTTP2 有什麼用?

HTTP2 是一種用於通過 Internet 傳輸數據的協議,可提高從服務器向瀏覽器傳送網頁、圖像和視頻等 Web 內容的速度和安全性。 與它的前身 HTTP 1.1 相比,它允許同時發送和接收多個請求,從而提供更快的頁面加載和更高的效率。

HTTP 和 HTTP2 有什麼區別?

HTTP2 是 HTTP 的更新版本,比其前身更快、更高效。 它使用單個連接來加載多個資源,而在 HTTP 中則需要多個連接。 HTTP2 還提供數據壓縮和優先級排序,從而為用戶帶來更快的頁面加載時間。

為什麼 http2 沒有被廣泛使用?

由於兼容性和實現問題,HTTP2 並未得到廣泛使用。 一些舊設備和軟件不支持 HTTP2,需要專用服務器和 SSL 證書才能實現。