在周四的一篇 Chrome Developer 博客文章中,Barry Pollard 介紹了 Chromium 社區(qū)的下一發(fā)展方向。其中最重要的,莫過于從 Chrome 106(以及其它基于 Chromium 內(nèi)核的第三方瀏覽器的下一個版本)起,開發(fā)商將默認禁用對“HTTP/2 服務(wù)器推送”功能的支持。
截圖(via Jake Archibald)
據(jù)悉,HTTP/2 Server Push 允許網(wǎng)站向客戶端主動發(fā)送頁面所需的資源,而無需等待它們被請求。
然而正如 Jake Archibald 之前嘮過的那樣,這項功能存在一些問題與爭議,且通常難以實現(xiàn)其性能優(yōu)勢。
結(jié)果就是該功能未被太多使用,僅 1.25% 的 HTTP/2 站點啟用了這項特性。
對 HTTP/2 服務(wù)器推送功能使用狀況的分析結(jié)果,表明有好有壞(Chrome、Akamai)。
然而很多時候看不到顯著的凈性能爭議,甚至許多情況下會遇到性能下降。
此外即使被包含在了規(guī)范里面,Push 也沒有在許多 HTTP/3 服務(wù)器和客戶端中實現(xiàn)。
對于使用較新的 HTTP/3 的大部分網(wǎng)絡(luò),Push 已被有效地淘汰。
最近重新觀察到的分析結(jié)果表明,各網(wǎng)站對 HTTP/2 的支持率,已從 1.25% 滑落至 0.7% 。
、作為一種替代方案,103 Early Hints 響應(yīng)代碼是一個不太容易出錯的選項。
與服務(wù)器推送資源不同,其僅向瀏覽器發(fā)送可能受益于立即請求的資源的提示。
這意味著瀏覽器可自行決斷是否需要相關(guān)資源 —— 比如已有 HTTP 緩存的情況下。
其次是預(yù)加載關(guān)鍵資源,其允許頁面和瀏覽器一起工作,以在頁面加載的早期,搶先加載關(guān)鍵部分的資源。
由于仍需發(fā)送頁面本身,它較服務(wù)器推送 / 103 早期提示有一定的速度劣勢。
即便如此,預(yù)加載關(guān)鍵資源仍具有不延遲關(guān)鍵頁面資源的優(yōu)點(另外兩套方案都可能遇到這種狀況)。
最后需要指出的是,所有嘗試提前加載資源的解決方案,都有可能導致性能下降、因而需要綜合評估并適度使用。
通常情況下,瀏覽器本身就非常擅長做出正確的選擇,僅在某些條件下可獲得額外的增益。
當然,Web 社區(qū)一直在積極嘗試新鮮事物,并在不合時宜的情況下及時棄用,這也是它能保持長久生命力的一個主要原因。
至于聽起來潛力似乎很大的 Push 能夠發(fā)展到哪一步,仍有待時間去檢驗。
(舉報)