Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BFCacheを活用して無限スクロールのUX を改善した話

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

BFCacheを活用して無限スクロールのUX を改善した話

Avatar for Ryuya Yanagi

Ryuya Yanagi

March 25, 2026
Tweet

More Decks by Ryuya Yanagi

Other Decks in Technology

Transcript

  1. unload イベントは使用しない Cache-Control: no-store を使用しない ページ遷移する前に IndexedDB 接続や fetch/XMLHttpRequest、WebSocket など

    を切断する next dev でサーバーを立ち上げた場合、WebSocket が使用されているので BFCache は効かない。開発環境でも next start で立ち上げて確認する必要 がある https://web.dev/articles/bfcache?hl=ja#optimize ※ ブラウザの種類やインストールしている拡張ツールによって挙動が変わるので確 実に BFCache を有効にするのはむずかしい BFCache を有効にするためには
  2. リプレイス前の Cache-Control ヘッダーを参考にしていたが経緯が不明 Cache-Control: private, no-cache, no-store, max-age=0, must- revalidate

    になっていたので絶対にキャッシュしたくないんだろうなという 意思は感じる 社内で検討した結果、外しても問題なさそうだったので no-store を削除 そもそも Cache-Control: no-store が必要か
  3. 無限スクロール、ブラウザバック時にデータ消える問題を BFCache を利用して 解決した BFCache を有効にすることでブラウザバック時に JS の実行を再開することが できる BFCache

    を有効するためには unload イベントや、 Cache-Control: no-store を 使用しない ※ 今回はハードナビゲーションのページ遷移時の BFCache の有効化について説明し ました。ソフトナビゲーション(SPA遷移)の場合は BFCache を有効にしてもうま くいきません。 まとめ