1. ホーム
  2. javascript

[解決済み] 戻るボタンを押したときにキャッシュからサファリを読み込まないようにする。

2023-06-01 02:13:13

質問

戻るボタンをクリックすると、safari が古い youtube 動画を読み込むという問題があります。私はonunload=""を追加しようとしました(ここに記載されている Safari 5 で戻るボタンのキャッシュを防止する をbodyタグに追加してみましたが、この場合はうまくいきません。

特定のページでsafariがキャッシュから読み込まないようにする方法はないでしょうか?

どのように解決するのですか?

あなたの問題の原因は バックフォワードキャッシュ . これは、ユーザーが離れていくときに、ページの完全な状態を保存することになっています。ユーザーがバックボタンで戻ったとき、ページはキャッシュから非常に速く読み込まれます。これは、HTMLコードのみをキャッシュする通常のキャッシュとは異なる。

ページが bfcache のためにロードされるとき onload イベントは発生しません。その代わりに persisted プロパティを確認します。 onpageshow イベントのプロパティです。これは、最初のページロード時には false に設定されます。bfcacheからページを読み込むと、trueに設定されます。

Kludgishな解決策は、ページがbfcacheから読み込まれたときに強制的に再読み込みを行うことです。

window.onpageshow = function(event) {
    if (event.persisted) {
        window.location.reload() 
    }
};

jQueryを使用している場合は、そうします。

$(window).bind("pageshow", function(event) {
    if (event.originalEvent.persisted) {
        window.location.reload() 
    }
});