17

A と B の 2 つのページがあります。フローは次のとおりです。

  • へ行く
  • javascript Ajax で A に追加する一連のコンテンツを Ajax し、A' を形成します。
  • Bに行く
  • [戻る] を押すと、A' ではなく A に戻り、すべての Ajax コンテンツが表示されません。

他の誰かがこれに気付きましたか?もしそうなら、どうやって修正しますか?

Chrome が B に移行する直前に A' 状態をキャッシュし、A' を再現する場合、それは許容されます。Chrome が単純に A 全体 (それを A' に変換した Ajax リクエストを含む) を再ロードした場合、それも機能します。A の古い不完全なバージョンをロードしている現在の動作は、私が望むものではありません。

編集:[戻る]を押してもサーバーが新しいリクエストを受信して​​いないため、キャッシュされたバージョンをロードしていることがわかります。

4

3 に答える 3

7

このトピックは古いですが、解決策を共有すると思いました。Firefox、Chrome、および Safari が一貫して動作するようにするには、戻るときに再読み込みする必要があるページにアンロード ハンドラーを設定し、キャッシュ無効化ヘッダーも使用する必要があります。

HTTP ヘッダー内

Cache-Control: must-revalidate, no-store, no-cache, private

そして、ページのJavaScriptで

$(window).unload(function(){}); // Does nothing but break the bfcache

詳細については、こちらをお読みください: http://madhatted.com/2013/6/16/you-do-not-understand-browser-history

于 2014-12-10T23:32:32.200 に答える
1

トピックが古いことは知っていますが、この問題の解決策を見つけるのはそれほど簡単ではなく、解決するのに数時間を無駄にしました。これらの2行でChromeの問題が解決しました:

Response.Cache.SetCacheability(HttpCacheability.NoCache);

Response.Cache.SetNoStore();
于 2013-10-04T20:34:34.437 に答える
0

xhr リクエストを使用していて非表示のフレームを使用していない場合、戻るボタンと進むボタンは xhr リクエストに関連付けられません。

于 2012-04-10T21:29:24.297 に答える