
出品 | OSC開源社區(ID:oschina2013)
谷歌博客顯示,在 Chrome 106 和其他基於 Chromium 的瀏覽器的下個版本中,默認情況下將禁用對 HTTP/2 服務器推送(HTTP/2 Server Push)的支持。
HTTP/2 允許服務器在實際請求之前 「推送」 服務端可能需要的資源, HTTP/2 的 Server Push 特性解決了 HTTP/1.x 的無腦按順序加載資源的問題,本意是提高網頁的響應性能。
然而這功能邏輯本身就有問題,比如資源存放在單個業務服務器上,並行推送多個靜態資源只會降低響應速度,性能不升反降。而對於前後端分離的業務來說,HTTP/2 本身就支持多路復用,server push 只能稍微降低瀏覽器解析 html 的時間,對現代瀏覽器來說性能提升可以忽略不計。
HTTP/2 時代也只有 1.25% 的 HTTP/2 站點使用了這個特性。在 HTTP/3 出來之後,該功能更是徹底被遺忘了,最新的分析中,網站對 HTTP/2 的支持率從 1.25% 下降到 0.7%。
替代方案
103 Early Hints是 Server Push 的首選替代方案,它具有 Push 的許多優點,而缺點則少得多。與服務器推送資源不同,103 Early Hints 只向瀏覽器發送可能受益於請求的資源提示。瀏覽器可以控制它是否需要這些資源,比如瀏覽器已經在 HTTP 緩存中擁有這些資源,則無需額外加載。
預加載關鍵資源是另一種選擇,它允許頁面和瀏覽器一起工作,在頁面加載的早期搶先加載關鍵資源。它不如 Server Push 或 Early Hints 快 —— 但它不會延遲關鍵頁面資源,而另外兩種解決方案都可能發生這種情況。
相關鏈接:https://developer.chrome.com/en/blog/removing-push/
END
關注後端面試那些事,回復【2022面經】
獲取最新大廠Java面經

