Back/forward cache (bfcache)
ページから離れるときに、ページ全体をJSの状態ごと「凍結したスナップショット」としてメモリに保存し、戻る/進むボタンで再読み込みなしに即座に復元するブラウザの最適化である。戻る操作がほぼ瞬時になる。
仕組みはこうだ。ページを離れるとき、ブラウザは文書とそのDOM、JSヒープを破棄せず、凍結してbfcacheに入れる。「戻る」を押すと、スクロール位置もフォームの内容もそのまま、ネットワークも再実行もなしに、ミリ秒で解凍される。ナビゲーションの体感性能が最も大きく上がる最適化の一つで、しかも、ページが対象になっていれば完全に無料だ。
bfcacheを妨げるよくある要因は、unload イベントリスナー(旧式なので避け、pagehide を使う)、Cache-Control: no-store、開いたままの接続である。開発者はbfcacheの阻害要因をテストして直すべきで、DevToolsやLighthouseのレポートがそれを示してくれる。復元を正しく扱うには pageshow/pagehide を購読する。重要だが見過ごされがちな最適化だ。