◆ デスクトップでは Chrome 96 から有効らしい
◆ 95 でも一部ページだと JavaScript や画面の書き換えが戻ってきても残っている
   ◆ 試した限りではメモリの使用が少なそうなページのみ
◆ 96 にアップデートしても全ページで bfcache は有効になってない

Chrome 96 で bfcache が有効になるみたいだったので 期待して試してみました
しかし 一部のページでしか動作していないようでした

bfcache

昔ながらのページの戻る進むではページが切り替わるときにサーバから HTML を取得し直して新しくページを読み込む動きでした
JavaScript で画面を書き換えたりしない頃は良かったのですが JavaScript で色々書き換えるようになると ページを戻ったときにその URL を新しく開いたのと同じ状態になるのでは 直前に見ていたのとは全然違う画面になることが多いです
理想は完全に移動前の状態に戻ることです
そこで JavaScript で書き換えられた後の DOM や変数やタイマーなども含めて完全にキャッシュしておいて 戻ってきたときに移動前の状態を再現できるのが bfcache です
ここ数年で意味が変わってなければそのはずです

95 でも動く?

まず比較のために 95 で bfcache が使われてないことを確認したのですが 一部のページではすでに使われていました

devtools のコンソールで

window.foo = "FOO"

と実行してグローバル変数を追加したあとに ページ内のリンクをクリックして移動します
ページのロードが終わったらすぐにブラウザの戻るボタンで戻ってきます
戻ってきたら window.foo の値を確認します

普通なら一度ページを移動しているので devtools での代入は残っていなくて undefined になります
bfcache が有効ならページ移動前に代入したのが残っていて FOO となります
試してみると FOO と表示されました

すでに 95 で有効なの?と確認したものの Chrome Status では 96 からになっていて 95 は Android の対応のようです
試したのは Windows10 の Chrome 95 です

その後 他のページも色々試すと undefined となるページもありました
どちらかというとほとんどが undefined でした

試した限りだと 飛び先が別ドメインとか HTTP/HTTPS とかは関係なく ページ自体のメモリ使用量で変わってそうでした
オフィシャルサイトのトップとかある程度は重そうなページだとキャッシュされず 戻ってくると変数は初期状態になっていました
最小限の CSS/JavaScript で作られたちょっとしたツールの画面みたいな軽そうなページだと 変数が保持されていました
DOM も含めて JavaScript の変数状態すべてをキャッシュするとメモリ使用量が多くなりそうですし 軽いページだけで有効というのはわからなくはないです

96 でも変わってない

95 でも一部有効だったので 96 では完全にどのページでも有効なのかなと思ってアップデートしました
そして bfcache が使われてなかったページで同じ内容を試したのですが……何も変わってませんでした

95 でも有効だった小規模なページだけならともかく全ページでやると問題も起きて延期とかあったんでしょうか?
ただ bfcache に関しては Chrome が最先端というわけではなくかなり昔から Firefox などでは使えていて それから数年たってやっと Chrome でも使えるようになるのかっていうものです
bfcache 自体の実装に問題があるわけじゃないなら bfcache で動かなくなるページは無いと思うんですけどね
DOM を含めた JavaScript の状態を完全に復元するなら 移動しなかったのと一緒なわけですし
タイマー関係で時間が飛ぶというのはありえますが それって PC ごとスリープして復帰したときも同じですし あまり問題があるとは考えづらいと思うのですけど

bfcache がないと中途半端にフォームの入力だけ復元されて JavaScript の内部状態と同期されていない問題があって その回避のためには SPA にするのが楽みたいなところがあるので早く完全に対応してほしいところです