往返快取 (或 bfcache) 是一種瀏覽器最佳化功能,能讓使用者迅速往返網頁,大幅提升瀏覽體驗,尤其是需要頻繁來回瀏覽的網站。
web.dev 上的 bfcache 文章
![]()
Yahoo! JAPAN News 是日本最熱門的新聞平台之一,他們致力於提高 bfcache 命中率,結果大幅改善了使用者體驗和業務。具體來說,他們進行的 A/B 測試結果顯示,使用 bfcache 的網頁廣告收益增加了 9%。
本個案研究將說明 Yahoo! JAPAN News 移除了 bfcache 的阻礙,以及 bfcache 如何大幅提升使用者體驗。
移除 bfcache 的阻礙
bfcache 自 Chrome 86 起推出,所有新式瀏覽器也支援這項功能。不過,如要充分運用 bfcache,就必須移除網站上可能造成阻礙的因素。Yahoo! JAPAN News 面臨的挑戰包括:
- 使用
unload處理常式。 - 在
Cache-control標頭上使用no-store指令。
如要檢查網站上的主要阻礙因素,請依序前往 Chrome 開發人員工具 >「應用程式」 >「返回/轉送快取」。或者,您也可以使用 notRestoredReasons API,根據實際使用情況,更全面地瞭解阻礙因素。
Yahoo! JAPAN News 移除了障礙:
- 取代卸載處理常式:他們使用
pagehide事件而非unload事件,因為unload非常不可靠。Permissions-Policy: unload=()已在 Chrome 115 中推出,網站可藉此可靠地移除特定來源的unload處理常式。Chrome 預計逐步淘汰unload處理常式。 - 變更
cache-control:將Cache-control標頭從no-store(CCNS) 變更為no-cache,即可啟用 bfcache。Chrome 預計在特定情況下,即使有no-store標頭,也會為 bfcache 快取內容。
CCNS 適用於任何情況下都不應快取的網頁。但請注意,含有 CCNS 的網頁無法享有任何快取技術的優勢,包括 CDN 邊緣伺服器和本機快取。
如果您有 CCNS 標頭,不妨趁此機會討論適合您網站的 Cache-control 策略。以下是 no-store 和 no-cache 的主要差異。
如要進一步瞭解 cache-control 選項,請參閱cache-control流程圖。
進行 A/B 測試以證明影響
如要評估 bfcache 的影響,Yahoo! JAPAN News 進行了為期兩週的 A/B 測試,他們向其中一組使用者提供已修正往返快取問題的網頁版本,向另一組使用者提供不適用往返快取的網頁版本。他們測試了流量顯著的網址路徑,確保測試能產生有意義的結果。網頁在視覺或功能上沒有其他差異。
以下影片比較了網站啟用 bfcache 和未啟用 bfcache 的情況。您會發現啟用 bfcache 的網站在往返瀏覽時,載入速度明顯加快。
最令人振奮的是,啟用 bfcache 的群組網頁瀏覽量和廣告收益大幅增加,尤其是在行動裝置上。
以下是 Yahoo! 觀察到的影響詳細資料。JAPAN News 進行 bfcache A/B 測試。詳情請參閱這項個案研究。
使用 bfcache 後,網頁間的返回/前進導覽會立即完成,使用者通常會在網頁上停留較久,因此廣告瀏覽次數會增加,進而提高廣告收益。
順暢的使用者體驗
網頁即時載入時,瀏覽體驗會更加順暢。
在 Yahoo! 以 JAPAN News 為例,其中一項主要使用者歷程是閱讀多篇文章:
- 前往文章清單。
- 按一下其中一篇文章即可閱讀。
- 完成後,請返回文章清單。
- 按一下其他文章即可閱讀。
在 bfcache 推出前,使用者讀完文章後,必須等待文章清單頁面重新載入。如果使用者想快速返回清單,挑選其他文章閱讀,這可能會造成阻礙。
另一個造成返回瀏覽阻礙的原因是捲動位置。實際上,瀏覽器會在往回瀏覽時嘗試還原捲動位置。不過,由於動態新增廣告或其他版面配置變更,捲動位置可能會還原錯誤。這會導致使用者混淆,甚至放棄瀏覽網頁。
如果向後導覽是由 bfcache 支援,這個問題就能解決:系統會立即正確還原捲動位置。
現在有了 bfcache,使用者歷程中的阻礙就消失了。使用者可以立即返回文章清單頁面,並選取其他文章閱讀,不必等待文章清單頁面載入。
使用者直接從一篇文章瀏覽到另一篇文章,然後返回時,也會發生同樣的情況:
簡而言之,Yahoo! JAPAN News 包含:
- 網頁瀏覽次數增加:使用 bfcache 快取網頁後,使用者更可能在網站內瀏覽。
- 收益增加:由於單次工作階段的網頁瀏覽量增加,廣告曝光次數也隨之增加,因此與未啟用 bfcache 的測試群組相比,行動裝置上的收益增加了 9%。
立即導入 bfcache
簡而言之,bfcache 不僅能讓網站立即載入,還能減少整體使用者體驗的摩擦,並提高網站參與度。
Chrome 團隊會持續研究 bfcache 阻斷因素,尤其是列出的原因,因為這些是 bfcache 未使用的常見原因。日後這些方法可能無法防止使用往返快取,但您不必等到那時才採取行動。您可以立即查看 bfcache 阻斷因素,避免這些常見 (和其他較不常見) 的模式,從中獲益。