根據先前的公告,Chrome 106 和其他採用 Chromium 的瀏覽器都會在下一版中預設停用 HTTP/2 伺服器推送功能。
為什麼要移除這項功能?
HTTP/2 伺服器推送功能可讓網站主動傳送網頁需要的資源,不必等待系統提出要求。不過,正如 Jake Archibald 先前所述,這項做法存在問題,而且成效通常不易實現。因此,這項功能的使用率不高,只有 1.25% 的 HTTP/2 網站使用這項功能。
分析 HTTP/2 伺服器推送功能的使用情形,結果不一 (Chrome、Akamai),沒有明顯的淨效能提升,且在許多情況下效能反而下降。
許多 HTTP/3 伺服器和用戶端並未實作推送程式,雖然已包含在規格中,對於大多數使用較新的 HTTP/3 的網站,Push 已實際淘汰。近期重新執行這項分析時,我們發現支援 HTTP/2 的網站從 1.25% 降至 0.7%。
HTTP/2 伺服器推送的替代方案
103 Early Hints 是較不易發生錯誤的替代方案,具有與 Push 相同的優點,但缺點則少很多。103 Early Hints 不會由伺服器推送資源,而是只向瀏覽器傳送提示,讓瀏覽器知道哪些資源可立即要求。這樣一來,瀏覽器就能自行決定是否需要這些資源,例如是否已在 HTTP 快取中找到這些資源。
預先載入重要資源是另一種替代做法,可讓網頁和瀏覽器一起在網頁載入前預先載入重要資源。雖然這確實需要先傳送網頁本身,因此速度不如伺服器推送或早期提示,但這項做法的好處是不會延遲該重要網頁資源,而這兩種解決方案都可能發生這種情況。
結論
網路必須能夠嘗試各種做法,並在未使用時捨棄。雖然推播的潛力看似很棒,但實際使用時,我們發現比起預期,推播帶來的問題更多。不過,我們在 103 Early Hints 設計中學到許多從 Push 的想法,接下來,您可以完成進度,並停止使用推播功能。
資源
- Chromium 中所有已淘汰和移除的項目
- ChromeStatus 項目:移除 HTTP/2 push
- 移除意圖:HTTP/2 和 gQUIC 伺服器推送
- Chromium 問題:預設關閉 HTTP/2 Push