ページがバックフォワード キャッシュから復元できることを確認する

背景

バックフォワード キャッシュ(bfcache)は、ページがナビゲーション履歴から復元されたときのために、ページのスナップショットをメモリに保存します。これにより、ページに戻るナビゲーションは大幅に速くなりますが、一部のブラウザ API(アンロード リスナーなど)が原因で bfcache が失敗し、ページは正常に読み込まれます。

Lighthouse で bfcache の失敗が検出される仕組み

スタンドアロン ナビゲーション

スタンドアロン ナビゲーションが終了すると、Lighthouse はナビゲーション履歴からページの復元を試み、bfcache が使用されているかどうかを検出します。

ユーザーフロー

Lighthouse では、ユーザーフローの実行時にナビゲーションの bfcache が積極的にテストされなくなります。これは、各ナビゲーションの最後で別のページに移動してページに戻っても、そのページのほとんどのユーザー エクスペリエンスが反映されていないからです。

ただし、ユーザー ジャーニーの一環として履歴ナビゲーションを含めることで、タイムスパン モードでの bfcache の使用をテストできます。例:

const flow = await startFlow(page);

// This navigation will not test the bfcache
// because it is part of a user flow.
await flow.navigate('https://example.com');

// This timespan will try to restore the page from the bfcache.
// Problems restoring from the bfcache are surfaced in this report.
await flow.startTimespan();
await page.goto('https://example2.com');
await page.goBack();
await flow.endTimespan();

bfcache の失敗について

なんらかの理由で bfcache からページを復元できなかった場合、監査は不合格になります。Lighthouse には、bfcache を使用できなかった理由と、問題の原因となったフレームがリストされます。失敗の原因は、次の 3 つのタイプのいずれかです。

  • 実用的: これらの問題を修正すると、キャッシュを有効にできます。
  • 保留中のサポート: Chrome ではこれらの機能がまだサポートされていないため、キャッシュ保存は行われていません。サポートされてきた Chrome ではこれらの制限は解除されます。
  • 対応不可: このページでは、これらの問題は修正できません。ページの制御できない領域が原因で、キャッシュが保存できません。

Lighthouse のバックフォワード キャッシュ監査の結果の例

関連情報