- Heapなども含めたJSの実行状態のスナップショットをキャッシュすることができ、bfcacheと呼ばれる
- setTimeoutの進捗なども一点でストップした状態で記録され、キャッシュをロードした時に再開される
- リクエストに対するレスポンスを保持するHTMLCacheとは異なるもの
- 直前のページにブラウザバックしたときに直前の状態をそのままリストアできる
- bfcache によるロードかどうかはイベントのパラメタでチェック可能
unload
イベントは unreliable なので使わないようにする。代わりに pageHide を。beforeunload
もブラウザによってはbfcacheに支障があるので避ける方が良いが、うっかり他のページのリンク押してしまった時に保存されていない変更あるけど大丈夫か?のダイアログ等の処理をするにはこのイベントがベストなので、この用途の場合のみ使う感じにするのが良い- IndexedDBやWebRTCなどとのコネクションが開きっぱなしのまま状態をキャッシュすると他のタブで開いているページに影響が出る可能性があるので、そういったコネクションが開きっぱなしの時はキャッシュされないこともある。ちゃんと閉じよう。
- ログアウト後にブラウザバックしたらキャッシュされててログインできちゃってる、みたいなことがないようにsensitiveなデータはちゃんとクリアしよう
- まだベータ機能だけどDevtoolからbfcacheが自分のページに使えるかどうかテストができる
- analytics系のツールではbfcacheのロードはpageviewにカウントされないことがほとんどなので、そのまま実装するとページビューの数が(データ上)減るかも