bfcacheのSEO
back/forward cache(bfcache)とは、ページ全体をメモリで凍結し、戻る/進むのナビゲーションを瞬時にするブラウザー機能です。HTTPキャッシュとの違い、適格性を阻むもの、テスト方法、Core Web VitalsとSEOとの現実の間接的な関係を説明します。
言語
back/forward cache(bfcache)は、移動したページ全体(DOM、JavaScriptヒープ、実行状態)をブラウザーがメモリで凍結し、戻る/進むで再読み込みなしに復元する機能です。Googleの順位要因ではありませんが、復元されたナビゲーションはほぼ瞬時にLCPを測定し、再レイアウトがなければ追加CLSをほぼゼロにします。最大のブロッカーはunloadイベントで、pagehide、pageshow、event.persisted、notRestoredReasonsを使ってテストと診断を行います。Cache-Control: no-store、HTTPキャッシュ、Cache Storage、古い検索の「キャッシュされたページ」と混同せず、ブラウザーごとのルールと復元率を確認してください。
Evidence for this claim The back-forward cache stores a complete page snapshot for instant history navigation. Scope: Current official or standards documentation. Confidence: high · Verified: web.dev: Back/forward cache Evidence for this claim Browser eligibility rules and APIs such as unload handlers can prevent bfcache use. Scope: Current official or standards documentation. Confidence: high · Verified: web.dev: bfcache eligibilityTL;DR — back/forward cache(bfcache)は、ページから離れたときにページ全体をメモリ上で凍結するブラウザー機能です。戻るまたは進むを押すと、ブラウザーがその凍結ページを先に追い出していなければ、再読み込みなしで瞬時に戻せます。Googleの順位要因ではなくブラウザーの機能ですが、復元されたページはほぼ瞬時に読み込まれるため、復元された戻る/進むナビゲーションのCore Web Vitalsの数値を静かに改善します。そのため、パフォーマンス監査で「bfcacheの適格性を直す」よう指示されることがあります。
bfcacheとは
ブラウザーの戻るボタンをクリックすると、2つのうちどちらかが起きます。ブラウザーが前のページを最初から再構築し、ファイルを再ダウンロードし、JavaScriptを再実行し、全体を再レイアウトするか、ページを瞬時に、離れたときの状態のまま復元するかです。その瞬時の版がback/forward cache、つまりbfcacheです。
仕組みはこうです。別のページへ移動したとき、ブラウザーは古いページを捨てる代わりに、実行中のJavaScriptを含むページ全体をメモリで凍結し、保存します。すぐに戻り、ブラウザーがまだ凍結ページを保持していれば、凍結を解除してまったく同じページを表示します。ネットワークリクエストも待ち時間もありません。これは復元の可能性であり保証ではありません。戻る前にブラウザーが凍結ページをメモリ不足、タイムアウト、特定のアクティビティなどで追い出すことがあり、その場合は通常の再読み込みになります。
Google自身の一行の説明は明快です。bfcacheは*“a browser optimization that enables instant back and forward navigation.”* (翻訳)(瞬時の戻る/進むナビゲーションを可能にするブラウザー最適化)です。
すでに知っている「キャッシュ」とは違う
ここは混同される部分です。「キャッシュ」と聞くと、通常はブラウザーキャッシュまたはHTTPキャッシュ、つまり再ダウンロードしないようブラウザーが保存するファイル(画像、スクリプト、スタイルシート)を思い浮かべます。bfcacheはそれではありません。これらのキャッシュが保存するのはファイルで、bfcacheが保存するのはJavaScriptの状態を含む動作中のページ全体をスナップショットにしたものです。Chrome自身の文書も、bfcacheは*“differs from browser cache and HTTP cache.”* (翻訳)(ブラウザーキャッシュやHTTPキャッシュとは異なる)と明記しています。
さらに、bfcacheと一緒に扱われることがある別の2つとも違います。1つは、現在のセッションのためにコンパイル済みスクリプトやデコード済み画像を保持するブラウザーのメモリ内リソースキャッシュ、もう1つはサイトがcaches.open()で明示的に管理するリクエスト/レスポンスの組、サービスワーカーのCache Storageです。どちらもbfcacheと同じページで動作できますが、別の仕組みです。
また、GoogleやBingが検索結果で提供していた古い「キャッシュされたページ」または「キャッシュされたスナップショット」機能(保存していたページ版を表示する小さなドロップダウン)でもありません。これは検索機能で、廃止されています。bfcacheはライブなブラウザー機能で、検索結果とは関係ありません。
bfcacheはSEOに役立つのか
直接には役立ちません。bfcacheはGoogleの順位要因ではありません。Google自身のCore Web Vitals順位文書にも一度も登場しません。bfcacheがするのは、実際に復元される訪問者の戻る/進むナビゲーションをほぼ瞬時に読み込ませ、ブラウザーがそれを優れた「ページ読み込み」と測定できるようにすることです。多くの訪問者が戻る/進むを使うサイト(買い物、検索結果の閲覧、記事から記事への読書)なら、サイト全体のCore Web Vitalsのフィールド値を改善する可能性があります。Googleが順位システムの報いるものと整合すると説明する多くの要素の1つです。「bfcacheが順位を上げる」からは2段階離れた関係で、復元率、全体のCore Web Vitals評価、順位を保証しません。しかし、現実に測定できる効果です。
bfcacheを阻むもの、テスト方法、誇張しないCore Web Vitalsとの正確な関係を知りたいなら、Advancedタブへ切り替えてください。
Evidence for this claim The back-forward cache stores a complete page snapshot for instant history navigation. Scope: Current official or standards documentation. Confidence: high · Verified: web.dev: Back/forward cache Evidence for this claim Browser eligibility rules and APIs such as unload handlers can prevent bfcache use. Scope: Current official or standards documentation. Confidence: high · Verified: web.dev: bfcache eligibilityTL;DR — bfcacheはページ全体のメモリ内スナップショット(DOM+JSヒープ+実行状態)であり、再取得できるHTTPレスポンス、ブラウザーのメモリ内リソースキャッシュ、サービスワーカーのCache Storageではありません。ここが最初に押さえるべき概念上の区別です。離れるとJavaScriptを一時停止してページを凍結し、戻る/進むでは、凍結スナップショットがまだあれば、ネットワークリクエストなしで即座に解除・再表示します。ただし追い出しはいつでも起こり得るため、復元は「ありそう」でも保証ではありません。Google Searchの順位要因として文書化されておらず、Search CentralのCore Web Vitals文書にもありません。関係するのは、復元されたナビゲーションにおけるフィールドCWV(主にLCPとCLS)の測定という、間接的で範囲の限定されたものです。復元率、集計CWV評価、順位、コンバージョンは保証しません。最大の適格性ブロッカーは
unloadハンドラー(Chromeでヒット率約18ポイント低下)です。歴史的に最大だったのはCache-Control: no-store(履歴ナビゲーションのモバイル約17%、デスクトップ約7%をブロック)ですが、Chromeは2025年の展開後、多くのno-storeページを条件付きで許可します。認証/Cookieの変更で追い出され、同じオープン接続APIでは引き続きブロックされます。オープン接続、タイマー、オブザーバーはpagehide/freezeで閉じるか一時停止し、pageshow/resumeで再確立します。window.opener、Permissions Policy、フレームもブロック要因になり得るため、推測せずDevToolsまたはnotRestoredReasonsでフレームごとの理由を確認します。Chrome DevToolsで一回のテストを行い、フィールドではChrome限定のnotRestoredReasonsAPIで診断します(nullは復元の証拠ではなく、理由文も安定した契約ではありません)。ブラウザーごとに適格性ルールがあり、SPAのソフトナビゲーションは同じ扱いになりません。
bfcacheの実態(正確さの背骨)
最も重要なのは、bfcacheがキャッシュされたHTTPレスポンスではなく、ページ全体のメモリ内スナップショットであることです。ページから離れると、ブラウザーは破棄する代わりにJavaScript実行を一時停止し、DOM、JSヒープ、進行中のタイマーなどページ全体を凍結してメモリに保持します。凍結スナップショットがまだ使える間に戻る/進むを押すと、ネットワークリクエストも再レンダリングもゼロで、離れたときのページを解除して再表示します。これは可能な復元であり保証ではありません。メモリ圧力、タイムアウト、イベント、ブラウザー固有のルールでスナップショットが追い出されれば、普通の履歴ナビゲーションになります。Googleの標準的な表現は、bfcacheが*“a browser optimization that enables instant back and forward navigation.”* (翻訳)(瞬時の戻る/進むナビゲーションを可能にするブラウザー最適化)だというものです。
これをHTTP/ブラウザーキャッシュと混同するのが、競合コンテンツに繰り返し現れる誤りです。HTTPキャッシュは過去のリクエストへのレスポンス、つまり再配信できるファイルを保存します。bfcacheは実行中のページを保存します。ChromeのDevTools文書はこの線引きを明示し、bfcacheは*“differs from browser cache and HTTP cache.”* (翻訳)(ブラウザーキャッシュやHTTPキャッシュとは異なる)としています。HTTPキャッシュのようにキャッシュヘッダーでbfcacheを「有効化」するわけではありません。ヘッダーが関係するのは、Cache-Control: no-storeが以前ページを不適格にしていた点だけです。
同じ区別は、bfcacheと混同される別の2つのキャッシュにも当てはまります。現在のセッションのためにコンパイル済みスクリプトやデコード済み画像を保持するブラウザーのメモリ内リソースキャッシュと、サイトがcaches.open()で自ら管理する明示的なリクエスト/レスポンス組であるサービスワーカーのCache Storageです。どちらもbfcacheと同時に動作できますが、bfcacheそのものではありません。bfcacheはキャッシュ資産や傍受レスポンスではなく、凍結されたページインスタンスです。
もう1つ明確にしておく価値があります。bfcacheは、Google(およびBing)が以前検索結果で公開していた古い「キャッシュされたページ」機能とは無関係です。それは検索インデックスに保存されたページスナップショットで、廃止されています。bfcacheはクライアント側のレンダリングエンジン機能です。
戻る/進むナビゲーションは実際どのくらい一般的か
これはニッチなエッジケースではありません。web.devによれば、“1 in 10 navigations on desktop and 1 in 5 on mobile are either back or forward.”(デスクトップの10回に1回、モバイルの5回に1回のナビゲーションは戻るまたは進む)です。ECサイトの商品カテゴリから商品へ移動して戻る流れ、検索結果、ページ分割されたコンテンツ、記事から記事への読書など、繰り返し/戻る/進むの流れがあるサイトでは、現実のナビゲーションの大きな部分をほぼ瞬時にできます。
ブラウザー対応
“All major browsers include a bfcache, including Chrome since version 96, Firefox and Safari.”(主要ブラウザーはすべてbfcacheを含み、Chromeはバージョン96以降、FirefoxとSafariも含まれます。)FirefoxとSafariにはそれぞれ長く運用されているbfcache実装があり、Chromiumベースのブラウザー(Edge、Brave、Opera、Arc)はChromeのものを継承します。MicrosoftのEdgeポリシー文書も、ページから離れると現在の状態(ドキュメントツリー、スクリプトなど)がback-forward cacheに保存される可能性があり、戻ればキャッシュ前の状態で復元・表示される可能性があると説明しています。Edgeでは既定で有効で、唯一のオフスイッチはサイト所有者ではなくIT管理者が制御するエンタープライズポリシーです。
重要な注意点は、ブラウザーごとにbfcacheの適格性ルールがあることです。Chrome DevToolsの「Test back/forward cache」に合格しても、FirefoxやSafariで適格とは限りません。Chromeでの合格は必要条件であって十分条件ではないと扱います。
bfcacheの適格性を阻むもの
unloadイベント — 最大の単一ブロッカー
この記事から1つだけ持ち帰るなら、unloadイベントの使用を止めることです。web.devはGoogle文書としては珍しい強さで、“Never use the unload event. Ever!”(unloadイベントは絶対に使うな)としています。Chromeでは、unloadハンドラーによりbfcacheヒット率が約18パーセントポイント低下します。自ら招く不適格要因として最大です。
Chromeが積極的に廃止している理由は2つあります。第一に最大のbfcacheブロッカーだからです。第二に、そもそもunloadは非常に信頼できません。モバイルでは、タブがバックグラウンド化されて終了し、ブラウザーがunload発火よりbfcacheを優先するため、頻繁に発火しません。「クリーンアップ」を任せたイベントが実行されないことが多く、同時に本物のパフォーマンス改善もブロックしています。
修正方法:
unloadをpagehideに置き換える。pagehideイベントはunloadが発火するすべての場合に加え、ページがbfcacheへ入る場合にも発火するため、厳密な上位互換です。確実な「ユーザーが離れる」クリーンアップにはvisibilitychangeを使います。pageshowでbfcache復元を検出する。pageshowを監視してevent.persistedを確認します。trueならページはbfcacheから復元されており、古いデータを更新したりページビューを再カウントしたりする合図です。Permissions-Policyでunloadリスナーを先回りしてブロックする。Permissions-Policy: unload=()レスポンスヘッダーで、unloadハンドラーが登録されること自体を防ぎます。Chromeは既定ポリシーをdenyへ段階的に移行しており、unload用のPermissions-PolicyはChrome 115から提供されています。
Cache-Control: no-store — 歴史的には最大、現在は複雑
ここは競合コンテンツの多くが誤る鮮度の論点です。歴史的には、Cache-Control: no-storeがbfcacheからページを除外する最大の単一理由でした。Chrome自身の数字では、モバイルの履歴ナビゲーションの約17%、デスクトップの約**7%**です。古いページを配信しないよう、多くのサイトが防御的にno-storeを設定します。しかしGoogleの主張は、bfcache復元は古いキャッシュレスポンスを読み込むのではなく、タブを開いたままにしたかのようにまったく同じライブページを再表示するため、この理由は弱くなるというものです。
Chromeは挙動を変更しましたが、普遍的ではなく条件付きです。実験はChrome 116で始まり、2025年3月と4月にユーザー100%への最終展開が行われました。Chromeは現在、安全条件を満たす多くのno-storeページをbfcacheに許可します。Chrome自身の文書によれば、凍結中に認証状態やCookieが変わるとページはbfcacheから追い出されます(サインアウトまたはCookieを消去した訪問者が、古いサインイン済みスナップショットを見ないためです)。また、IndexedDB、WebSocket、WebRTCなど、後述する同じオープン接続APIの固定リストは、他のページと同様にno-storeページを引き続き除外します。これは特定バージョン範囲のChrome固有の挙動であり、他のブラウザーや古いChromeも従うと想定できません。固定ルールを信じず、実際にテストするブラウザーとバージョンのDevTools/notRestoredReasonsレポートを取得します。実務上の結論:no-storeを無条件かつ永続的なbfcacheブロッカーと列挙するガイド(この古い版を含む)は古く、完全に解決済みと扱うのも古い見方です。ページの鮮度が本当に重要なら、Chromeの文書はno-storeではなくno-cacheまたは短いmax-age(例:max-age=60)を示唆しています。
オープン接続、オブザーバー、その他のブロッカー
ナビゲーションの時点で、特定のオープンリソースが適格性をブロックすることがあります。どれがブロックし、完全にブロックするのか、閉じて再接続できるだけなのかは、ブラウザーとバージョンによって異なります。以下は固定された永続的なブロッカー一覧ではなく、パターンの例として扱います。
- 進行中の
fetch()/XMLHttpRequestリクエスト。 - オープンな
IndexedDBトランザクション。 - オープンな
WebSocket/WebRTC接続、タイマー、オブザーバー(MutationObserver、IntersectionObserverなど)。ここは改善が続く領域です。Microsoft Edgeの最近のリリースノートでは、オープンWebSocketがbfcacheを完全にブロックする代わりに、ページがbfcacheへ入ると閉じられるようになり、pageshowイベントのevent.persisted確認で再接続するよう推奨されています。単にページを除外するのではなく、ブロッカーを減らすChromeの広い流れとも一致します。
固定リストを暗記するより、構築すべき一般パターンがあります。pagehide/freezeの処理でオープン接続、タイマー、オブザーバーを閉じるか一時停止し、event.persistedがtrueのとき、pageshow/resumeの処理で再確立します。どのAPIが完全に適格性をブロックし、どれが一時停止されて再接続できるだけなのかをブラウザーが変更しても、このパターンは保てます。
window.opener、Permissions Policy、フレーム。 window.opener参照、特定のPermissions Policy、埋め込み(同一オリジンまたはクロスオリジン)フレームも適格性に影響します。このチェックリストはAhrefsのCLSガイドとChromeの文書から整理したものです。ただし、一般的なチェックリストから実際の原因を決めつけないでください。Chrome DevToolsパネルとnotRestoredReasons APIは、トップフレームと各iframeをフレームごとにブロック理由を報告します。実際にブロックしたフレームがトップレベルページとは限らないためです。一般的な一覧から推測せず、テスト中のブラウザーでフレーム単位のレポートから実際の理由を取得します。
ライフサイクルイベント/状態の順序を正しく扱う
各ライフサイクルイベントが実際に証明することと、単に示唆することを混同するのは、ここで適格性の誤りに次いで多い正確性のバグです。
| イベント/状態 | シグナル | 実際の意味 | すること |
|---|---|---|---|
pagehide(event.persisted === true) | キャッシュする意図 | ブラウザーがページをbfcache用に凍結しようとしている。キャッシュ登録の確認ではない | ここで接続、タイマー、オブザーバーを閉じる/一時停止する。実際に復元されるとは想定しない |
freeze | 一時停止 | JS実行は一時停止したが、復元前にページが追い出される可能性はある | pagehideで行ったこと以外は不要 |
| (イベントなし)追い出しの可能性 | — | メモリ圧力、タイムアウト、ブラウザールールで、凍結ページはいつでもメモリから削除され得る。これを知らせるイベントは発火しない | 後でクリーンアップが走るとは頼らず、pagehide/freezeで無条件に行う |
pageshow(event.persisted === true) | 復元の確認 | bfcache復元が実際に起きた唯一の信頼できるシグナル | 時間依存/機密状態を更新し、閉じた接続を再接続し、分析ビューを1回だけ数える |
resume | 再開 | 確認済み復元後にJS実行が再開した | freezeで一時停止したものを再接続する |
実務上のルールは、pagehide.persistedを意図として扱い、証拠とはしないことです。復元を見る前にページが追い出されることがあります。実際に復元が起きた証拠はpageshow.persisted === trueだけです。クリーンアップは通常のナビゲーションでも安価で安全なのでpagehide/freezeで無条件に行い、復元専用の処理はevent.persistedで条件付けてpageshow/resumeで行います。通常の新規読み込みでデータを更新したり分析ビューを二重計上したりしないためです。
bfcacheをテストして診断する方法
ラボ/一回限り:Chrome DevTools
DevTools → Application → Background services → Back/forward cacheを開き、**「Test back/forward cache」**をクリックします。Chromeは自動的にchrome://terms/へ移動して戻り、成功または具体的なブロッカー一覧を報告します。1 URLずつ確認するのに適しています。
フィールド/本番:notRestoredReasons API
以前、適格性を確認する唯一の方法は手動の1 URLずつのDevToolsテストで、実ユーザーのナビゲーションがなぜブロックされたかを見る方法はありませんでした。Chrome 123以降で提供されるPerformanceNavigationTimingのnotRestoredReasonsプロパティがこの差を埋めます。実際のフィールドデータで、トップフレームと同一オリジンiframeの具体的なブロック理由を報告します。
const nav = performance.getEntriesByType('navigation')[0];
console.log(nav.notRestoredReasons);Chrome自身のAPI指針から、使うときに正しく扱う点を挙げます。
- Chrome限定(123以降)。 FirefoxとSafariには同等のフィールドAPIがないため、そこでの復元率を知るには手動のスポットチェックが必要です。
nullは曖昧で、合格のサインではない。 ページが復元された場合も、ブラウザーが理由を収集しなかった場合もあります。Chromeの文書も、nullを復元成功の証拠としないよう述べています。- 理由文は安定した契約ではない。 文字列一致をハードコードせず、正確な文言はChromeのバージョンで変わる可能性があるため、理由ごとにグループ化して傾向を追います。
notRestoredReasonsをpageshow.persistedの復元率とともに、修正の前後で取得します。単一のスナップショットではなく傾向を比較し、APIが届かないブラウザーについてはFirefoxとSafariで手動のDevTools/ラボチェックも行います。本番RUMでbfcacheを大規模に診断するときに使うツールですが、全体像そのものとは扱いません。
bfcacheとCore Web Vitals — 正確な関係
ここは競合コンテンツが曖昧にするニュアンスであり、正確に押さえる価値のある切り口です。
bfcache復元の測定方法。 ブラウザー(したがってCrUXフィールドデータ)は、bfcacheから復元されたナビゲーションを非常に速い「ページ読み込み」として数えます。ほぼ瞬時のLCPで、正しく実装されて再レイアウトが不要なら、再レンダリングがないため追加のCLSは実質ゼロです。DebugBearの実環境比較では、bfcache復元ページのLCPは約100ms、未キャッシュ読み込みは約427msでした。これがbfcacheが私のAhrefs CLSチェックリストでLCPとCLSのレバーとして登場する理由です。そこでは簡潔にこう書いています。“Make sure your pages are eligible for bfcache. The back/forward cache keeps pages in the browser cache. It allows for instant loading of a page that was already loaded, meaning no layout shifts will happen.” (翻訳)(ページがbfcacheに適格であることを確認してください。back/forward cacheはページをブラウザーキャッシュに保持し、すでに読み込んだページを瞬時に読み込めるため、レイアウトシフトは起こりません。)
正確にするべきスコープ上の注意点が2つあります。第一に影響するのは、CrUXが戻る/進む(navigation-typeディメンション)と分類するナビゲーションだけです。大半のサイトで多数を占める初回訪問や再読み込みについては何も言いません。第二に、復元されたユーザーの測定上の体験が改善しても保証ではありません。bfcacheから追い出されたユーザー(前述のライフサイクル表を参照)は改善されない通常の読み込みになります。bfcache適格性の作業が動かすのは、総トラフィックの固定シェアではなく、戻る/進むナビゲーションにおける復元率です。集計フィールドのCore Web Vitals評価、順位、コンバージョンも保証しません。一般的なパフォーマンス/SEO修正ではなく、現実に測定できる、範囲の明確なレバーです。
bfcacheは順位要因か? いいえ。 これは防御可能で差別化された主張です。Google自身のCore Web Vitals順位文書にはbfcacheがまったく登場しません。正直な影響連鎖は、bfcache適格性 → 戻る/進むナビゲーションのフィールドCWV(主にLCP/CLS)改善 → Core Web VitalsはGoogleが順位システムの報いるものと整合すると説明する「ページエクスペリエンス」シグナルの1入力、です。「bfcacheが順位を上げる」より、実質的に弱く、正確な主張です。bfcacheは正しくはレンダリングエンジンの機能であり、クローラーの機能ではありません。GooglebotやBingbotがページをクロールする方法とは関係ないため、robots.txtやサイトマップのような「SEOに対するBingのbfcache見解」はありません。
SPAとソフトナビゲーション。 bfcacheは実際のブラウザーナビゲーションと履歴イベントで動作します。SPAのクライアント側「ソフト」ルート変更(実際のブラウザーナビゲーションを起こさないJS駆動の表示切替)はbfcacheイベントではなく、同じ扱いになりません。RUMツールがCore Web Vitalsをソフトナビゲーションに帰属させようとすると、CrUXとRUMの測定が不一致になることがあります。JSフレームワークのサイトを監査するなら、指摘すべき点です。
実際のウェブでbfcacheブロッカーはどのくらい一般的か
HTTP ArchiveのWeb Almanacが追跡しています。固定した古いニュースではなく、変化中の領域です。2022年版では、unloadとno-storeの条件だけで、モバイルページの少なくとも約22%がbfcache不適格でした。その後、unloadハンドラーの使用はサイト層とデバイス全体で減少していますが、Cache-Control: no-storeの使用は増えました。2025年章では約23%のサイトで、2024年の約21%から増えており、認証/パーソナライズ体験の増加と厳格なコンプライアンス要件が一因とされています。
引用する価値がある直感に反する発見は、大規模でトラフィックの多いサイトほど、自分のbfcacheをブロックしやすいことです。上位1 000サイトでは、デスクトップページの約28%、モバイルページの20%が今もunloadハンドラーを使います。全サイトではデスクトップ約11%、モバイル約10%にすぎません。大規模サイトはレガシー分析やunload依存コードを多く抱えることが理由です。失う戻る/進むトラフィックが最も多いサイトが、自分で妨げていることがよくあります。
どこに位置付けるか
bfcacheは、このクラスターにある複数のパフォーマンスレバーの1つです。効果はCore Web Vitalsのフィールドデータ、特にCumulative Layout ShiftとLargest Contentful Paintに現れます。復元ページは再レイアウトなしで即座に再表示されるためです。ライブなページのスナップショットではなくファイルを保存するcachingとは別物ですが、両者はCache-Controlヘッダーで接点を持ちます。Interaction to Next Paintとの直接の関係はないため、無理に結び付けません。
AIサマリー
Advanced版の要約です。
- bfcache=ページ全体のメモリ内スナップショット。 DOM、JSヒープ、実行状態を含み、再取得できるHTTPレスポンス、ブラウザーのメモリ内リソースキャッシュ、サービスワーカーのCache Storageではありません。離れるとブラウザーはJSを一時停止してページを凍結し、戻る/進むではスナップショットがまだあればネットワークリクエストなしで解除・再表示します。追い出しはいつでも起こり得るため、復元はありそうでも保証ではありません。Chromeの文書では「ブラウザーキャッシュやHTTPキャッシュとは異なる」とされています。古い「キャッシュされたページ」検索機能でもありません。
- 順位要因ではなく、関係の範囲が限定されます。 GoogleのCore Web Vitals順位文書はbfcacheに触れていません。実際の連鎖は、bfcache適格性 → 復元された戻る/進むナビゲーションのフィールドCWV(主にLCP/CLS)改善 → CWVはGoogleが順位システムとの整合を説明するページエクスペリエンス入力の1つ、です。復元率、集計CWV、順位、コンバージョンは保証せず、CrUXが戻る/進むと分類したナビゲーションだけに関わります。
- 規模:「デスクトップの10回に1回、モバイルの5回に1回のナビゲーションが戻るまたは進む」です。Chromeはv96以降、FirefoxとSafariも対応しますが、ブラウザーごとに適格性ルールがあります。
- 最大のブロッカーは
unloadイベント。「Never use the unload event. Ever!」(unloadイベントは絶対に使うな)で、Chromeのヒット率を約18パーセントポイント下げます。pagehide+visibilitychangeに置き換え、pageshow/event.persistedで復元を検出し、Permissions-Policy: unload=()でunloadをブロックします。 Cache-Control: no-storeは歴史的に最大のブロッカー(履歴ナビゲーションのモバイル約17%、デスクトップ約7%)でした。Chromeは2025年3~4月の展開後、多くのno-storeページを条件付きで許可します。認証/Cookie変更で追い出され、同じオープン接続APIでは引き続きブロックされます。Chrome限定であり、絶対的ブロッカーとする古いガイドも、完全解決とする説明も古いものです。- その他のブロッカー: 進行中のfetch/XHR、タイマー、オブザーバー、オープンIndexedDB、WebSocket/WebRTC(
pagehide/freezeで閉じる/一時停止し、pageshow/resumeで再接続)、window.opener、Permissions Policy、フレームです。推測せず、DevTools/notRestoredReasonsでフレームごとの理由を取得します。 - ライフサイクルの正確さ:
pagehide.persistedは意図で証拠ではありません。pageshow.persisted === trueだけが復元を確認します。pagehide/freezeで無条件にクリーンアップし、機密データ更新、再接続、分析ビュー1回の計上はpageshow/resumeで復元時だけ行います。 - テスト: Chrome DevToolsの「Test back/forward cache」でラボ確認し、Chrome 123以降のChrome限定
notRestoredReasonsAPIでフィールドデータを診断します。nullは復元の証拠ではなく、理由文は不安定で、Firefox/Safariは手動確認が必要です。修正の前後で両APIの傾向を比較します。 - SPA: クライアント側のソフトナビゲーションはbfcacheイベントではなく、同じ扱いになりません(CrUXとRUMの不一致要因です)。
- 導入状況(Web Almanac):
no-store使用は約21%から23%へ増え、上位1 000サイトではunload使用がデスクトップ約28%に達します。大規模サイトが自分のbfcacheをブロックしていることがよくあります。pageshow.persistedの復元率も併せて比較します。
公式ドキュメント
bfcacheに関する一次資料です。bfcacheはChrome/レンダリングエンジンの文書(Googleの機関としての声)にあり、Google Search Centralにはありません。この区別自体が要点です。
Google/Chrome
- 戻る/進むキャッシュ — 定義、仕組み、10回に1回/5回に1回の統計、
unloadの指針を含む標準文書です。 - 戻る/進むキャッシュをテストする — DevToolsのテスト手順、主なブロッカー、ブラウザー/HTTPキャッシュとは異なるという明示を含みます。
- Cache-Control: no-storeでbfcacheを有効にする — 2025年のポリシー変更、17%/7%の数字、展開時期です。
- unloadイベントを廃止する —
unload廃止の理由とPermissions-Policy移行です。 - 戻る/進むキャッシュのnotRestoredReasons API —
PerformanceNavigationTimingでのフィールド診断(Chrome 123以降)です。 - Core Web VitalsとGoogle検索結果を理解する — bfcacheに一度も触れないGoogle Search Centralの順位文書です。
Microsoft/Edge
- Microsoft Edge policy: BackForwardCacheEnabled — Edgeの定義、同じ
unloadの注意点、エンタープライズポリシーによるオフスイッチです。
MDN/ウェブ標準
- bfcache — MDN Glossary — エンジンに依存しない一般的な定義とHTTPキャッシュとの区別です。
- Monitoring bfcache blocking reasons — MDN — 実際に
notRestoredReasonsを使う方法です。
出典からの引用
出典文書にある記録付きの声明です。各リンクは出典ページの引用箇所へ移動するディープリンクです。
Google/Chrome — bfcacheとは何か、なぜ重要か
- “Back/forward cache (or bfcache) is a browser optimization that enables instant back and forward navigation.” (翻訳)(back/forward cache(bfcache)は瞬時の戻る/進むナビゲーションを可能にするブラウザー最適化です。) 引用へ移動
- “1 in 10 navigations on desktop and 1 in 5 on mobile are either back or forward. With bfcache enabled, browsers could eliminate the data transfer and time spent loading for billions of web pages every single day!” (翻訳)(デスクトップの10回に1回、モバイルの5回に1回は戻るまたは進むです。bfcacheにより、毎日何十億ものウェブページでデータ転送と読み込み時間をなくせます。) 引用へ移動
- “All major browsers include a bfcache, including Chrome since version 96, Firefox and Safari.” (翻訳)(主要ブラウザーはすべてbfcacheを含み、Chromeはバージョン96以降、FirefoxとSafariも含みます。) 引用へ移動
Google/Chrome — 最重要の最適化ルール
- “Never use the
unloadevent. Ever!” (翻訳)(unloadイベントは絶対に使わないでください。) — web.dev。 引用へ移動
Chrome DevTools — bfcacheはHTTPキャッシュではない
- “Back/forward cache differs from browser cache and HTTP cache.” (翻訳)(back/forward cacheはブラウザーキャッシュやHTTPキャッシュとは異なります。) — Chrome DevTools文書。 引用へ移動
Microsoft Edge — 同じ機能、同じ注意点
- “When navigating away from a page, its current state (document tree, script, and so on) may be preserved in the back-forward cache. If the browser navigates back to the page, the page may be restored from the back-forward cache and displayed in the state it was in before being cached.” (翻訳)(ページから離れると現在の状態(ドキュメントツリー、スクリプトなど)がback-forward cacheに保存される可能性があります。ブラウザーがページへ戻ると、キャッシュされる前の状態で復元・表示される可能性があります。) — Microsoft Edgeポリシー文書。 引用へ移動
Patrick Stox(私)— bfcacheをCLSのレバーとして
- “Make sure your pages are eligible for bfcache. The back/forward cache keeps pages in the browser cache. It allows for instant loading of a page that was already loaded, meaning no layout shifts will happen.” (翻訳)(ページがbfcacheに適格であることを確認してください。back/forward cacheはページをブラウザーキャッシュに保持し、すでに読み込んだページを瞬時に読み込めるため、レイアウトシフトは起こりません。) — 私のAhrefs CLSガイド。 記事を読む
unload event. Ever!” (翻訳)(unloadイベントは絶対に使わないでください。)の一文は、ライブページの正確な部分文字列と照合しました。Chrome DevToolsの*“differs from browser cache and HTTP cache”* (翻訳)(ブラウザーキャッシュやHTTPキャッシュとは異なります。)とMicrosoft Edgeのポリシー文言は、それぞれの文書からの引用です。ChromeのCache-Control: no-storeの数字(モバイル約17%/デスクトップ約7%)とunloadのヒット率約18パーセントポイント低下は、この本文で文書化された事実として報告しており、この作業で逐語的な部分文字列として独立検証した引用ではありません。GoogleまたはBingのSearchチーム代表者による、bfcacheについて記録された声明はありません。Google側の声明の正しい帰属先はSearchリエゾンではなく、Chrome/web.devの技術文書です。 bfcache適格性チェックリスト
ページがback/forward cacheへ入れることを確認するチェックです。
- ページ上のどこにも**
unloadイベントリスナーがない**(自分のスクリプトでも第三者スクリプトでも)。最大の単一ブロッカーです。 - クリーンアップ/分析コードを
unloadから**pagehideとvisibilitychange**へ移した。 - **
pageshow**リスナーがevent.persistedを確認し、古いデータを更新してbfcache復元後のページビューを正しく再計上する。 - **
Permissions-Policy: unload=()**レスポンスヘッダーで、unloadリスナーの登録をブロックすることを検討した。 -
Cache-Control: no-storeを確認した。防御的に設定しているなら本当に必要か確認する(Chrome 2025以降は多くのno-storeページを条件付きで許可します。認証/Cookie変更で追い出され、同じオープン接続APIで引き続きブロックされます。他のブラウザー/バージョンが同じとは限りません)。鮮度が重要ならno-cacheまたは短いmax-ageを優先する。 - ナビゲーション時にオープン接続、タイマー、オブザーバーを残していない。進行中fetch/XHR、オープンIndexedDBトランザクション、WebSocket/WebRTC、
MutationObserver/IntersectionObserverはpagehide/freezeで閉じる/一時停止し、event.persistedがtrueのpageshow/resumeで再確立する。 - **
window.opener**参照、制限的なPermissions Policy、適格性を妨げるフレームがない。どれが原因か決めつけず、DevTools/notRestoredReasonsでフレームごとの理由を確認する。 - Chrome DevTools → Application → Back/forward cache → **「Test back/forward cache」**でラボテストした。
- RUMで
notRestoredReasonsを使い大規模にフィールド診断した(Chrome限定。nullは復元の証拠ではなく、理由文は安定した契約ではない。文字列をハードコードせず理由で傾向を見る)。 - Chromeでの合格がどこでも適格を意味すると仮定していない。独自ルールを適用するFirefoxとSafariをスポットチェックした。
bfcacheチートシート
ブロックするもの — 修正方法
| ブロッカー | 理由 | 修正 |
|---|---|---|
unloadイベントハンドラー | #1ブロッカー(ヒット率約18ポイントのコスト)。そもそも信頼できない | pagehide+visibilitychange、Permissions-Policy: unload=()を使う |
Cache-Control: no-store | 歴史的に最大(モバイル約17%/デスクトップ約7%) | Chrome(2025以降)は多くのno-storeページを条件付きで許可する。認証/Cookie変更で追い出され、同じオープン接続APIで引き続きブロックされる。他のブラウザー/バージョンは完全にブロックする可能性がある |
進行中のfetch/XHR、タイマー、オブザーバー | ナビゲーション時のオープン作業。ブラウザー/バージョン固有 | pagehide/freezeで閉じる/一時停止し、pageshow/resumeで再確立 |
| オープンIndexedDBトランザクション | ナビゲーション時のオープン接続 | ナビゲーション前に閉じる/コミットする |
| オープンWebSocket/WebRTC | オープン接続 | pagehideで閉じ、pageshowで再接続 |
window.opener、Permissions Policy、フレーム | オープナーまたはブロックされたフレームにページが結び付く | 回避/rel="noopener"を使い、フレーム単位の理由を確認する |
知っておくイベント
| イベント | 発火時期 | 用途 |
|---|---|---|
pagehide(persisted) | unloadが発火するすべての場合に加え、bfcacheへ入るとき | 意図のシグナル — クリーンアップ、unloadの代替(復元の証拠ではない) |
freeze | bfcacheへ入るとき | pagehideのクリーンアップ以外は不要 |
pageshow(persisted) | 読み込み時とbfcache復元時 | 唯一の復元確認シグナル — 状態更新、再接続、ビュー1回の計上 |
resume | 復元確認後 | freezeで一時停止したものを再接続 |
visibilitychange | タブの非表示/表示 | 信頼できる「ユーザーが離れる」処理 |
テストする
| 範囲 | ツール |
|---|---|
| 1 URL、ラボ | DevTools → Application → Back/forward cache → 「Test back/forward cache」 |
| 実ユーザー、フィールド | PerformanceNavigationTimingのnotRestoredReasons — Chrome限定(123以降)。nullは復元の証拠ではない |
| Firefox/Safari | フィールドAPIなし — 手動でスポットチェック |
早わかり
- bfcache=メモリ上の動作中ページ全体であり、ファイル、リソースキャッシュ、サービスワーカーのCache Storageではありません。Chromeによれば「ブラウザーキャッシュやHTTPキャッシュとは異なります」。
- Googleの順位要因ではありません。Search CentralのCWV文書は触れていません。復元されたユーザーの測定LCP/CLSは改善しますが、復元率、集計CWV、順位、コンバージョンは保証しません。
- 対応:Chrome 96以降、Firefox、Safari。各ブラウザーに独自ルールがあります。
- デスクトップ10回に1回/モバイル5回に1回のナビゲーションが戻る/進むです。
bfcacheのアンチパターン(背後にある神話)
「bfcacheはHTTP/ブラウザーキャッシュそのもの。Cache-Controlで設定する。」
いいえ。bfcacheは独立したページ全体のメモリ内スナップショットです。Chromeの文書は*“differs from browser cache and HTTP cache.”* (翻訳)(ブラウザーキャッシュやHTTPキャッシュとは異なる)と述べています。キャッシュヘッダーが関係するのは、no-storeが以前ページを不適格にしていた範囲だけです。キャッシュヘッダーでbfcacheを「オン」にすることはありません。
「bfcacheはGoogleの順位要因なので、直せば順位が上がる。」 公式のGoogle Search資料で確立された主張ではありません。Core Web Vitals順位文書はbfcacheに触れていません。実際の関係は間接的で、戻る/進むナビゲーションのフィールドLCP/CLSが改善するという、より弱く正確なものです。
「Cache-Control: no-storeはbfcacheを永久に常にブロックする。」 歴史的には正しく、今も歴史上最大の原因です。しかしChromeが2025年にno-store安全なbfcacheを全面展開した後は、もはや一律に正しくありません。変更前のガイドはこの点で古いものです。完全に解決済みとするのも古く、Chromeの例外は条件付き(認証/Cookie変更で追い出され、同じオープン接続APIでブロック)かつChrome固有です。
「persisted: trueでpagehideが発火したページは、確実にキャッシュされた。」 いいえ。それは意図であって証拠ではありません。復元を見る前にブラウザーがページを追い出すことがあります。実際に復元されたことを確認するのはpageshow.persisted === trueだけです。
「Chrome DevToolsのbfcacheテストに合格すれば、どこでも適格だ。」 誤りです。Chrome、Firefox、Safariはそれぞれ独自の制限を適用します。1つでの合格は別のブラウザーでの適格性を保証しません。
「unloadは終了/クリーンアップコードを実行する適切な方法なので、使い続ける。」 いいえ。Chromeは非常に信頼できないとし、モバイルではまったく発火しないことも多いと説明しています。単一最大のbfcacheブロッカーであるため、Permissions-Policyで積極的に廃止しています。pagehide+visibilitychangeを使います。
「bfcacheは複数ページサイトと同じようにSPAを助ける。」 条件付きでしか正しくありません。bfcacheは実際のブラウザーナビゲーションに結び付きます。クライアント側の「ソフト」ルート変更は同じイベントではなく、同じ扱いになりません。そのためSPAの比重が高いサイトではCrUXとRUMの不一致も起こります。
「bfcacheは解決済み/古い話で、監査する価値がない。」 Web Almanac自身のデータと矛盾します。no-storeの使用は増加しており、unloadの使用は最大でトラフィックの多いサイトほど顕著に高いままです。戻る/進むトラフィックを最も失うサイトが、今も自分で妨げています。
bfcacheをテストして診断するツール
- Chrome DevTools — Back/forward cacheパネル。 Application → Background services → Back/forward cache → 「Test back/forward cache」。
chrome://terms/へ自動移動して戻り、成功または正確なブロック理由を報告します。単一URLのラボ確認に最適です。 notRestoredReasonsAPI(Chrome 123以降)。RUMでperformance.getEntriesByType('navigation')[0].notRestoredReasonsを読み、手動ラボテストだけでなく、同一オリジンiframeを含む実ユーザーのブロック理由を大規模に確認します。- PageSpeed Insights/Lighthouse/CrUX。 監査で「back/forward cache」の推奨やフラグが最初に現れる場所であり、bfcache適格サイトのフィールドCWV効果が見える場所です。
Permissions-Policy: unload=()ヘッダー。 テストツールではなく、第三者を含むunloadリスナーの登録を能動的に防ぐ強制手段です。- Web Almanac(HTTP Archive)Performance章。 デバイスとサイト順位層別に、ウェブでbfcacheブロッカーがどれほど一般的かを比較します。
DevToolsでunloadハンドラーが復元をブロックすると表示される
症状: Back/forward cacheテストがunloadを指す。考えられる原因: 自分または第三者のコードがunloadリスナーを登録した。修正: クリーンアップをpagehide/visibilitychangeに置き換え、適切ならPermissions-Policy: unload=()を追加し、影響する各スクリプトを変更するたびにテストを再実行します。
復元されたページに古いユーザーデータが表示される
症状: 戻ると瞬時に戻るが、アカウント状態、在庫、その他の動的な値が古い。考えられる原因: 時間依存データを更新しないままページが凍結状態から再開した。修正: pageshowを監視し、event.persistedを確認して必要なデータだけ更新します。通常の読み込みと復元の両方が正しく動くことを確認します。
分析で戻る/進むビューが欠落または二重になる
症状: ページビューが実際の履歴ナビゲーションと異なる。考えられる原因: 分析が最初の読み込みだけで動く、または復元と区別せず2回動く。修正: pageshowを明示的に処理し、event.persistedを使って復元ナビゲーションを1回だけ計上します。
ラボでは合格するがフィールド復元率が低い
症状: サンプルURLはDevToolsに合格するのに、RUMでは復元されないケースが多い。考えられる原因: 別のテンプレート、ブラウザー、実ユーザー状態、断続的なオープン接続がブロッカーを追加している。修正: notRestoredReasonsを収集し、理由とテンプレートでグループ化し、1回の合格から推測せず、フィールドで優勢なケースを再現します。
bfcache修正が反映されたことを証明する
適格性テスト
実行するテスト: DevTools → Application → Back/forward cache → Test back/forward cache。期待結果: ページがブロック理由なしで正常に復元される。失敗の解釈: 少なくとも1つの適格性ブロッカーが残っている。監視期間: テストした状態のChromeでは直ちに確認。ロールバック条件: クリーンアップ、セキュリティ、必要なアプリケーション動作を壊す修正。
復元挙動テスト
実行するテスト: 別ページへ移動して戻り、pageshowがevent.persisted === trueを受け、時間依存データが更新されることを確認する。期待結果: 瞬時の復元1回、正しいデータ、分析ビュー1回。失敗の解釈: ページがキャッシュされなかったか、復元処理が不完全。監視期間: 代表的なサインイン済み/未サインイン状態で直ちに確認。ロールバック条件: 復元後の古い機密データまたはアクションの二重実行。
フィールド理由テスト
実行するテスト: RUMでPerformanceNavigationTiming.notRestoredReasonsを監視する。期待結果: 対象テンプレートで対象ブロッカーが減り、別の優勢なブロッカーが現れない。失敗の解釈: ラボサンプルが本番を代表していないか、別の依存関係が問題を所有している。監視期間: 同じテンプレート構成を比較できるだけの実際の戻る/進むトラフィック。ロールバック条件: 修正に結び付いた重大なアプリケーションまたはデータ完全性の回帰。
維持する価値のあるbfcache指標
復元ヒット率
指標: bfcacheから復元された適格な戻る/進むナビゲーション。何が分かるか: ユーザーが瞬時のナビゲーション効果を受ける頻度。取得方法: ブラウザーとテンプレートで分けたRUMナビゲーションエントリとpageshow.persisted。ベンチマーク/現実的な範囲: ブラウザーのルール、ページ状態、ナビゲーション構成が異なるため、自社のベースラインを設定する。頻度: 毎週、ライフサイクル変更後。
復元されない理由
指標: notRestoredReasonsでグループ化した履歴ナビゲーション。何が分かるか: 実際の復元を最も失わせるブロッカー。取得方法: 対応ブラウザーのPerformanceNavigationTiming API。ベンチマーク/現実的な範囲: 自分のコードが制御するブロッカーはゼロを目標にし、ブラウザー/APIのカバレッジを明記する。頻度: 毎週トリアージ。
復元ナビゲーションの正確さ
指標: 復元後のエラー、古いデータのインシデント、分析/アクションの二重実行。何が分かるか: 適格性を高めてもアプリケーションの正確さが保たれるか。取得方法: pageshow.persistedに紐付けたRUMエラーイベント、アプリケーション監視、分析QA。ベンチマーク/現実的な範囲: 既知の正確性またはプライバシーの失敗ゼロ。頻度: 継続的なアラートとリリースQA。
時間を使う価値のあるリソース
私の関連執筆
- 累積レイアウトシフト(CLS)とは?改善方法 — bfcache適格性をCLS改善策として、短いブロッカー一覧とともに説明する記事です。
- Core Web Vitals(CWV)とは?改善方法 — 親となる指標を説明し、bfcacheを多くのCLSレバーの1つとして扱います。
- テクニカルSEO入門ガイド — ウェブパフォーマンスを大きな文脈のどこに置くかを説明します。
私の講演
- How Search Works(SlideShare) — クロール、レンダリング、インデックス登録、順位付けを説明する講演です。bfcacheのようなレンダリングエンジン機能がSearchの順位シグナルの外にある理由を理解する文脈になります。(私の定型免責事項:「This is my understanding of systems… not going to be 100% complete or accurate.」)
公式
- 戻る/進むキャッシュ(web.dev) — 標準文書です。
- Cache-Control: no-storeでbfcacheを有効にするとunloadイベントを廃止する(Chrome for Developers) — 古いガイドを古くした2つの変更です。
- Core Web VitalsとGoogle検索結果を理解する(Google Search Central) — bfcacheに触れていない順位文書です。
業界の資料
- bfcache — MDN用語集 — 正確でエンジンに依存しない定義とHTTPキャッシュとの区別です。
- サイト速度に戻る/進むキャッシュが与える意味(DebugBear) — 実サイトのログと具体的なLCP比較(キャッシュ復元約100ms対未キャッシュ約427ms)を含む、この領域で最もデータに基づく記事です。
- 戻る/進むキャッシュを解説(SpeedVitals) — 仕組み、適格性、テスト、CWVへの影響です。
- 戻る/進むキャッシュ:概要と実装方法(NitroPack) — CMS/ホスティング向けの実装中心の記事です。
- パフォーマンスを変えるブラウザーの戻る/進むキャッシュ(Smashing Magazine) — 堅実な技術詳説ですが、2025年の
no-store変更より前の内容です。 - Web Almanac — パフォーマンス章(2025)(HTTP Archive) — デバイスとサイト順位層別の
unloadとno-storeの現実の採用データです。
引用する価値のある統計
- 戻る/進むナビゲーションは一般的: “1 in 10 navigations on desktop and 1 in 5 on mobile are either back or forward”(デスクトップの10回に1回、モバイルの5回に1回のナビゲーションは戻るまたは進む) — ニッチなケースではなく機会の規模です。出典
unloadはbfcacheヒット率を約18パーセントポイント下げます。 そのため最大のブロッカーであり、廃止されています。出典Cache-Control: no-storeは歴史的に最大のブロッカーでした。 Chromeの2025年3~4月の展開で多くのno-storeページがbfcacheに許可される前は、履歴ナビゲーションのモバイル約17%、デスクトップ約7%でした。出典- bfcache復元はほぼ瞬時です。 DebugBearは復元ページのLCPを約100ms、未キャッシュ読み込みを約427msと測定しました。出典
- 大規模サイトほど自らブロックします。 上位1 000サイトではデスクトップ約28%、モバイル約20%が
unloadを使い、全サイトでは約11%/約10%です。no-storeの使用は増えています(約21%→23%)。出典
自分で確認:Back/Forward Cache(bfcache)
bfcacheとは何か、何がブロックするか、SEOとどう関係するかについて5つの簡単な質問です。それぞれ答えを選んでから、確認してください。
変更履歴
2026年8月8日に更新。
編集概要と記録された変更の詳細。変更の詳細
-
変更の詳細な注記は現在英語でのみ提供されています。
完全な比較は利用できません — この改訂の以前のスナップショットがアーカイブされていません。
2026年7月17日に更新。
編集概要と記録された変更の詳細。変更の詳細
-
変更の詳細な注記は現在英語でのみ提供されています。
-
変更の詳細な注記は現在英語でのみ提供されています。
-
変更の詳細な注記は現在英語でのみ提供されています。
完全な比較は利用できません — この改訂の以前のスナップショットがアーカイブされていません。