Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
BFCacheを活用して無限スクロールのUX を改善した話
Search
Ryuya Yanagi
March 25, 2026
Technology
160
0
Share
BFCacheを活用して無限スクロールのUX を改善した話
Ryuya Yanagi
March 25, 2026
More Decks by Ryuya Yanagi
See All by Ryuya Yanagi
最近の推しリンター、Oxlintをご紹介
apple_yagi
0
260
forwardRef を禁止したくて Biome に PR を出した話
apple_yagi
0
150
PR_TIMESにおけるFastlyの導入と運用について.pptx.pdf
apple_yagi
1
48
PR TIMESにおけるNext.jsとcacheの付き合い方
apple_yagi
4
3.1k
開発速度を上げつつ品質を保つためのフロントエンド開発
apple_yagi
1
970
Other Decks in Technology
See All in Technology
データ分析基盤の信頼を支える視点と設計
yuki_saito
0
120
React Compiler導入の効果と運用の工夫
kakehashi
PRO
3
300
SpeechTranscriber + AIによる文字起こし機能
kazuki1220
0
120
TypeScriptはどのようにどこまで推論できるのか ─ とにかく as は禁止で
ypresto
1
270
RedmineをAIで効率的に使う検証
yoshiokacb
0
170
TypeScriptとAngular Signal で実現する保守性の高いアプリケーション設計 - 3層アーキテクチャによる責務分離の実践(たつかわ) https://2026.tskaigi.org/talks/10
nealle
1
120
Fラン学生が考える、AI時代のデザインに執着した突破口
husengs7
1
230
20260515 OpenIDファウンデーション・ジャパンご紹介
oidfj
0
260
AWSアップデートから考える継続的な運用改善
toru_kubota
2
320
サプライチェーン攻撃への備えについて考えている #湘なんか
stefafafan
2
2.1k
20260516_SecJAWS_Days
takuyay0ne
2
540
パーソルキャリア IT/テクノロジー職向け 会社紹介資料|Company Introduction Deck
techtekt
PRO
0
250
Featured
See All Featured
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
200
ラッコキーワード サービス紹介資料
rakko
1
3.3M
Information Architects: The Missing Link in Design Systems
soysaucechin
0
930
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.2k
Evolving SEO for Evolving Search Engines
ryanjones
0
200
The Curious Case for Waylosing
cassininazir
1
350
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
410
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
140
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
550
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.9k
Transcript
BFCacheを活用して無限スクロールのUX を改善した話 エンジニアとデザイナーで考えるUI/UX LT会@FE Yatai やなぎ @apple_yagi
やなぎ PR TIMES フロントエンドエンジニア X: @apple_yagi 好きな UI ライブラリは Base
UI です
無限スクロールを実装したことある人
https://gigazine.net/news/20260217-eu-kill-infinite-scrolling/ 余談
https://prtimes.jp/main/action.php?run=html&page=searchkey&search_word=fusic 私が実装した無限スクロールUI
元々 jQuery で実装されていたページを Next.js(Pages Router)にリプレイス 検索結果のリンクは next/link を使っていない ソフトナビゲーション(SPA遷移)ではなくハードナビゲーション ↑ここ大事
私が実装した無限スクロールUI
実装はできたが問題が。 。
ブラウザバックすると読み込んでいたデータが消える
ブラウザバックすると読み込んでいたデータが消える
スクロール位置や読み込んだデータをページ遷移前に sessionStorage とかに保存 してブラウザバック時に復元する? URL にスクロール位置をクエリパラメータ(例:?page=5)に保存しておいてブ ラウザバック時にそのページのデータをfetchする? 実装が複雑になるな どうやって改善するか
色々調べているととある記事を発見
None
これか?!
バックフォワード キャッシュ(bfcache)では、ユーザーがページから移動したと きにページを破棄するのではなく、破棄を延期して JS の実行を一時停止します。 ユーザーがすぐに戻った場合は、ページを再び表示し、JS の実行を再開します。 これにより、ユーザーはほぼ瞬時にページを移動できます。 https://web.dev/articles/bfcache?hl=ja BFCache
とは
ブラウザバック時に JS の実行を再開することができる 読み込んだデータを保持できる(React の useState の状態も復元できる) スクロール位置も保持することができる BFCache を有効にすることで
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 を有効にするためには
検証ツール → アプリケーションタブ → バックフォワードキャッシュ BFCache が有効になっているか確認する(Chrome)
Cache-Control に no-store が設定されてるな
リプレイス前の Cache-Control ヘッダーを参考にしていたが経緯が不明 Cache-Control: private, no-cache, no-store, max-age=0, must- revalidate
になっていたので絶対にキャッシュしたくないんだろうなという 意思は感じる 社内で検討した結果、外しても問題なさそうだったので no-store を削除 そもそも Cache-Control: no-store が必要か
Cache-Control: no-store ブラウザやCDNなどのキャッシュサーバーに、レスポンスの保存を一切許可しな い Cache-Control: no-cache ブラウザやCDNがレスポンスをキャッシュすることは許可するが、再利用する前 に必ずサーバーへそのキャッシュが有効か問い合わせ(検証)を行う no-cache と言いつつキャッシュを許可するので注意
補足:no-store と no-cache の違い
再度 BFCache が有効になっているか確認すると
None
https://prtimes.jp/main/action.php?run=html&page=searchkey&search_word=fusic 実際にスクロール位置が保持されるか確認
トップページ のスマホビュー 弊社で BFCache を有効活用している他事例
無限スクロール、ブラウザバック時にデータ消える問題を BFCache を利用して 解決した BFCache を有効にすることでブラウザバック時に JS の実行を再開することが できる BFCache
を有効するためには unload イベントや、 Cache-Control: no-store を 使用しない ※ 今回はハードナビゲーションのページ遷移時の BFCache の有効化について説明し ました。ソフトナビゲーション(SPA遷移)の場合は BFCache を有効にしてもうま くいきません。 まとめ