從 Chrome 中移除 HTTP/2 伺服器推送

根據先前的公告,Chrome 106 和其他以 Chromium 為基礎的瀏覽器會在後續版本中預設停用 HTTP/2 伺服器推送功能。

為什麼要移除這項功能?

HTTP/2 伺服器推送功能可讓網站主動傳送網頁所需的資源,而非等待要求。不過,正如 Jake Archibald 先前所述,這項做法存在問題,而且成效通常不彰。因此,這項功能的使用率不高,只有 1.25% 的 HTTP/2 網站使用這項功能。

分析 HTTP/2 伺服器推送功能的使用情形,結果不一 (ChromeAkamai),沒有明顯的淨效能提升,且在許多情況下效能反而下降。

雖然推送功能已納入規格,但許多 HTTP/3 伺服器和用戶端並未實作這項功能。對於大多數使用較新的 HTTP/3 的網站,推播功能已實際淘汰。近期重新執行這項分析時,我們發現支援 HTTP/2 的網站從 1.25% 降至 0.7%。

HTTP/2 伺服器推送的替代方案

103 Early Hints 是較不易發生錯誤的替代方案,具有與 Push 相同的優點,但缺點則少很多。103 Early Hints 不會由伺服器推送資源,而是只向瀏覽器傳送提示,讓瀏覽器知道哪些資源可立即要求。這樣一來,瀏覽器就能自行決定是否需要這些資源,例如是否已在 HTTP 快取中找到這些資源。

預先載入重要資源是另一種替代做法,可讓網頁和瀏覽器協同合作,在網頁載入初期預先載入重要資源。雖然這確實需要先傳送網頁本身,因此速度不如伺服器推送或早期提示,但這項做法的好處是不會延遲該重要網頁資源,而這兩種解決方案都可能發生這種情況。

結論

網路必須能夠嘗試各種做法,並在未使用時捨棄。雖然推播的潛力看似很棒,但實際使用時,我們發現比起預期,推播帶來的問題更多。不過,我們從 Push 中學到許多寶貴經驗,並將這些經驗應用於 103 Early Hints 的設計。接下來,您可以完成進度,並停止使用推播功能。

資源