2012-04-10 6 views
14

せずに、私は2つのページがあり、AとBの流れは次のとおりです。クロームボタン:次のようにのみ、最初のページのキャッシュバージョンを与え、任意のAjaxedコンテンツ

  • ゴー束をAjaxes javascriptの
  • へコンテンツのすべてAjaxedコンテンツずに、 '
  • は、[戻る]バックA、いないAへ行く押し
  • をBに行く' を形成する、Aに追加する

は誰を持っていますそうでなければ、これを気付いて、どうすればそれを修正しますか?

ChromeがBに行く直前にA '状態をキャッシュしていて、戻ってA'を再生した場合、それは受け入れられます。 ChromeがAの全体を(Ajaxリクエストを含めてA 'に変換したものも含めて)再ロードするだけであれば、それはうまくいくでしょう。 Aの古い、不完全なバージョンをロードしている現在の動作は、私が望むものではありません。

EDIT:キャッシュされたバージョンがロードされていることはわかっています。[戻る]を押したときにサーバーが新しいリクエストを受け取っていないためです。

+0

それぞれのページのように見える? –

+0

@QuintinRobinson:申し訳ありませんが、キャッシュヘッダーとは何ですか? –

+0

サーバーは、キャッシュ制御ヘッダーを介してページに適用されたキャッシュポリシーを強制している必要があります。私は心からこのことについてお伝えすることをお勧めします。ここには一つのリソースがあります:http://www.mnot.net/cache_docs/ –

答えて

0

さて、あなたは戻る]ボタンや[進む]ボタンがXHRリクエスト

0

に結び付けていないXHRリクエストと隠されていないフレームを使用している場合、私は話題が古いであることを知っているが、この問題を解決するには、私を見つけることは簡単ではありませんそれを解決するのに数時間を費やすだけでした。

Response.Cache.SetCacheability(HttpCacheability.NoCache); 

Response.Cache.SetNoStore(); 
+0

これはjavascriptですか? –

+1

いいえ、これは.netのようです。使用している言語/フレームワークに基づいて変更されます。基本的には、 'Cache-Control:no-store' HTTPヘッダーを設定するだけです。たとえばレールを使用している場合は、http://www.fordevs.com/2011/10/how-to-prevent-browser-from-caching-a-page-in-rails.html – Ryan

5

このトピックは古いですが、私は私の解決策を共有するだろうと思った:この2行は私のためにクロームの問題を解決しました。 Firefox、Chrome、Safariが一貫して動作するようにするには、ページを元に戻すときにリロードする必要があるページにアンロードハンドラを設定し、キャッシュ無効化ヘッダーも使用する必要があります。

HTTPヘッダで

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

とページ詳細はこちらをお読み

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

ためのJavaScriptで:キャッシュ・ヘッダーが何http://madhatted.com/2013/6/16/you-do-not-understand-browser-history