背景
バックフォワード キャッシュ(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 ではこれらの制限は解除されます。
- 対応不可: このページでは、これらの問題は修正できません。ページの制御できない領域が原因で、キャッシュが保存できません。