3

Google Chromeで戻るボタンを押すと、ソースコードがキャッシュされているように見えます(FFのDOMとは対照的ですが、これは単なる観察であり、私が確かに知っていることではありません)。

たとえば、チェックアウトプロセス中、ペイパルへのリダイレクトなど、このようなキャッシュを防ぐ必要がある場合があります。

どうすればいいのですか?

4

2 に答える 2

0

これは確かに問題であり、Chrome に固有のようです。私の場合、フォームが含まれている場合に古いページが表示されることだけが懸念され、すべてのフォームは私が作成したのと同じ AJAX フォーム ライブラリを使用して送信されるため、リダイレクトを実行する前に実行するためにこのコードを追加しました (リダイレクトを使用して JS で行われwindow.location = ...ます):

//If the user clicks the back button after submitting the form and being redirected,
//Google Chrome redisplays previous entries even if they have since been changed
//(its caching works differently from other browsers).
//This is a (non-foolproof) hack to try to prevent this.
if (window.chrome) {
    //This re-requests the page headers for the current page,
    //which causes Chrome to clear its cache of the page.
    //Unfortunately there appears to be no other client-side way of preventing this caching issue in Chrome.
    $.ajax({
        url: window.location,
        method: 'HEAD'
    })
}

もちろん、サーバー側でキャッシュなしヘッダーを設定するだけの方がはるかにクリーンですが、すべてのページに対してそれを行いたくはありませんでした。また、どのページにフォームが含まれているかをわざわざ検出したくもありませんでした (または手動でこれらのページのキャッシュ ヘッダー) は、Chrome でこの問題を回避するためのものです。

もっと良い解決策があることを願っていますが、まだ見つかっていません...

于 2015-05-27T21:04:54.473 に答える