4

いくつかのページを従来の ASP アプリでキャッシュしないようにする必要がありますが、考えられるすべてのヘッダーの組み合わせを試しましたが、何も機能しないようです。

Response.Expires         = -1
Response.ExpiresAbsolute = Now() - 1
Response.CacheControl    = "no-cache; private; no-store; must-revalidate; max-stale=0; post-check=0; pre-check=0; max-age=0"
Response.AddHeader         "Cache-Control", "no-cache; private; no-store; must-revalidate; max-stale=0; post-check=0; pre-check=0; max-age=0"  ' Same as previous line, I know, just in case.
Response.AddHeader         "Pragma", "no-cache"
Response.AddHeader         "Expires", "-1"

また、Web サイトと IIS の両方を再起動しようとしましたが、役に立ちませんでした。ページを離れてブラウザの戻るボタンを使用して戻ると、ページがリロードされません。

ここで何が欠けていますか?

編集:さらに多くのグーグル検索の後、私はこの JavaScript ソリューションを見つけて実装しました。これはクライアント側であるため防弾ではなく、サーバー側のソリューションを好みますが、それは仕事です!

それでも、サーバー側のオプションについて聞きたいです。

4

4 に答える 4

9

ブラウザの戻るボタンの結果が HTTP キャッシングに関連しているという印象で操作していますが、そうではありません。

戻るボタンの提供は、アプリケーションの HTTP スタックの観点から見たブラウザの裁量です。アプリケーションには、ウィンドウのコンテンツをレンダリングするために使用された http 要求のキャッシュ要件を考慮する義務はありません。実際、多くのブラウザーは、http 以外のプロトコルを介して配信されたコンテンツを表示できます。

戻るボタンを使用する最も一般的なシナリオを考えてみましょう。ユーザーは Web 検索エンジン (google、bing など) からいくつかの検索結果を取得し、結果の 1 つをクリックすると、コンテンツが探していたものではないことがすぐにわかり、[戻る] ボタンをクリックします。ユーザー エクスペリエンスを最適化するために、ほとんどのブラウザーは、ページからのナビゲーションが発生したときに、ページの多くのリソース (ページがレンダリングされるウィンドウも含む) を保持します。戻るボタンは、これらのリソースを再構築するか、元のウィンドウを再び表示するだけで実装できます。

于 2012-09-06T07:27:33.150 に答える
1

戻るボタンを押すと、一部のブラウザは常にキャッシュします。エクスプローラーのイベント戻るボタンをキャッチして何かをする方法がありますが、恐ろしいかもしれません。AJAX を介してページのデータをロードし、javascript を介して生成されたランダム変数でキャッシュを防ぐことができます。例が必要な場合はお知らせください...

于 2013-09-13T07:55:26.173 に答える
0

クラシック ASP での特定のページのキャッシュを防止します。以下のコードを試してください:

<% Response.CacheControl = "no-cache, no-store, must-revalidate" %>

セクションの下に上記のコードを追加します。

于 2016-12-21T12:38:35.013 に答える