この記事では『bfcache』について
- bfcacheとは
- bfcacheの注意点
- bfcacheの対策方法
- bfcacheを判断するpersistedプロパティ
などを分かりやすく説明するように心掛けています。ご参考になれば幸いです。
bfcacheとは
bfcacheは「Back-Forward Cache」の略であり、ユーザが一度訪れたWebページの状態をキャッシュとしてメモリ上に保存するブラウザの機能です。
通常、ブラウザの「戻る」や「進む」ボタンのクリックによって、Webページに再度アクセスすると、ブラウザはWebページの情報をサーバーから再度取得してレンダリングを行います。しかし、bfcasheを用いると、すでに保存されているキャッシュからWebページを読み込むため、サーバーからWebページの情報を取得する必要がなくなります。その結果、Webページの表示速度が大幅に向上します。
なお、すべてのブラウザがbfcacheをサポートしているわけではありません。2023年時点ではSafariとFirefoxがbfcacheをサポートしています。
補足
2023年時点ではSafariとFirefoxがbfcacheをサポートしていますが、ブラウザのバージョンによっては異なる場合もあるため、最新の情報を各ブラウザの公式ドキュメントなどで確認してください。
bfcacheの注意点
bfcacheはキャッシュした時点のWebページの状態をメモリに保存します。そのため、リアルタイムに更新されるWebページやユーザの操作によって変化するWebページなど動的な内容を含む場合には、期待通りのWebページが表示されないことがあります。
ブラウザの「戻る」や「進む」ボタンのクリックでSafariとFirefoxのみ期待通りのWebページが表示されない場合には、bfcacheが原因の可能性があります。
bfcacheの対策方法
bfcacheは以下のような処理で対策可能です。
window.addEventListener('pageshow', function (event) {
//Webページがキャッシュから読み込んでいるか
if (event.persisted) {
//強制リロード
window.location.reload();
}
});
// onpageshowを用いてもOK
window.onpageshow = function (event) {
if (event.persisted) {
window.location.reload();
}
};
ユーザーがブラウザの「戻る」や「進む」ボタンをクリックして、Webページが表示されると、pageshow
イベントが発火します。このイベントをaddEventListener
により捕捉します。
また、PageTransitionEvent
オブジェクトのpersisted
プロパティの値を利用します。persisted
プロパティはWebページがキャッシュから読み込んだ場合にはtrue
、Webページを直接読み込んだ場合にはfalse
を返します。つまり、bfcache機能によりWebページが表示されている場合にはtrue
になるということです。
Webページがキャッシュから読み込まれている場合には、window.location.reload()
でブラウザのリロードを実行します。
window.location.reload()
を呼び出すとページ全体がリロードされるため、ユーザーエクスペリエンスに影響を及ぼす可能性があります。リロードを避けたい場合は、bfcacheが原因で表示が崩れている部分を修正するための別のJavaScriptコードを書くことも考慮しましょう。
本記事のまとめ
この記事では『bfcache』について、以下の内容を説明しました。
- bfcacheとは
- bfcacheの注意点
- bfcacheの対策方法
- bfcacheを判断するpersistedプロパティ
お読み頂きありがとうございました。