2012-01-09 14 views
3

私のasp.netフォームアプリケーションで。私は特定のページのキャッシュを防止しようとしています。 これを行うにはResponse.AppendHeaderを使用して一連のキャッシュコントロールヘッダーを設定しました ASP.NETキャッシュコントロールヘッダーを設定する

 
protected override void OnLoad(Eventargs e) 
{ 
... 
Response.ClearHeaders(); 
Response.AppendHeader("Cache-Control","no-cache"); 
.... 
base.OnLoad(e); 
} 

私は、私のサイトを表示し、次のように私は行動を見リクエスト/レスポンスヘッダーを表示するFirefoxのコンソールの純タブを見たときにトラブルがある:

  1. POSTリクエスト/レスポンスリダイレクトを(page2.aspxへ) をトリガーするpage1.aspxに対して、ここでの応答には正しいヘッダーが含まれています。

  2. GETリクエスト/レスポンスにPage2.aspxため 関連する応答がキャッシュ制御ヘッダは、ちょうど第2の要求をするキャッシングを可能にするように思われる値「プリチェック= 0」

を有していますページのために起こる。 注:page1.aspxとpage2.aspxは、上記のOnLoadロジックを持っています。また、page2.aspxで何らかのアクションを実行すると、POST応答に正しいヘッダーが再度設定されます。

私はここで何が欠けていますか?私の期待は、OnLoadのロジックで、私は常にレスポンスのヘッダーを取得することを意味するため、常に「現在のバージョン」のページを取得する必要があります。

私が見ているのは、Firefoxがページのキャッシュバージョンをロードしていることです。

リクエストURLに問題を強制するためのランダムな識別子を作成することを検討していますが、それは少し重いと思われます。

----- update ----- これは、 'OnLoad'にキャッシュコードを持つことに関連しているようです。 これらのヘッダーをページのPage_Load()に追加しても問題ありません。どんな考えでも

答えて

2

Response.Cache.SetCacheability(HttpCacheability.NoCache); 
Response.Cache.SetNoStore(); 

ためResponse.AppendHeader("Cache-Control","no-cache");を交換してみてください、あなたは@ OutputCache directiveを持っていないとexplicitly preventing cache controlはないかということを確認してください。 this MSDN page on SetCacheabilityおよびSetNoStoreを参照してください。

+0

は、上記の私の追加のノートを参照してください。 – TygerKrash

+0

@TygerKrashあなたのヘッダーはある時点で上書きできますか? 'base.OnLoad'ではどうなりますか?コードをステップ実行して、a)キャッシュ制御を設定するコードがヒットしていることを確認し、b)応答オブジェクトを監視して、どこが変化しているかを確認できますか? –

関連する問題