質問

キャッシュの無効化テクニックに関連する質問があります...ブラウザのキャッシュ(css、images ...)を自動的に無効にするメカニズムをWebサイトに実装しようとしています。 Webサイトを更新する(画像やスタイルを変更する)たびに、ブラウザーのキャッシュをプログラムで無効にできるようにしたい。

たとえば、現在のリリースでは、とりわけ、CSSと一部の画像が変更されています。この状況では、更新が完了した後、ユーザーがWebサイトへのリクエストを実行すると、ブラウザーのキャッシュが自動的に無効になり、新しい画像とスタイルの再ダウンロードが強制されます。これは、クライアントの最初のリクエストに対してのみ行う必要があります...次のリクエストはキャッシュから取得する必要があります(したがって、no-cacheプラグマの設定は問題外です)。

私が試したことは次のとおりです。 BeginRequestイベントハンドラーで、次の行を追加しました。         Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate);     Response.Cache.SetETag(" \" e111293b17594f1487d136ea7e9314ac \"");

これにより、応答ヘッダーにETagが設定されます。リリースごとにこのETagを変更し、リクエストごとにETagを設定すると、キャッシュは無効になると考えましたが、そうではないようです。 Live HTTPヘッダーを使用して結果を確認し、ETAGが応答用に正しく設定されていますが、CSSと画像はまだキャッシュから取得されています。

これをどのように達成できるか、それともまったく達成できるかについてのアイデアはありますか?

事前に感謝します!

役に立ちましたか?

解決

過去にこのような問題に遭遇しました。残念ながら、これを達成するための本当に良い方法を見つけることができなかったので、回避策を考え出さなければなりませんでした。私はCSSファイルについてのみこの問題を扱っていたので、すべてのCSS参照に追加のクエリ文字列パラメーターを追加しました。たとえば、

 <link rel="stylesheet" type="text/css" 
       href="default.css?buildnumber=<%= Buildnumber %>" />

ビルド番号はリリースごとにインクリメントされるため、ブラウザはこの新しいファイルを探すことを余儀なくされました。理想的なソリューションではありませんが、問題なく機能しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top