ここで何が起こっているのか、私は本当に混乱しています。
(System.Web.Optimization.)Bundle
ライブラリは、バンドルされたすべてのファイルにファイルシステム ウォッチャーを配置しているようです。変更があるたびに (たとえば、CSS ファイルの内容を微調整したとします)、バンドルが再構築されます。
私は、Fiddler で CSS バンドルの URL にリクエストを送信することで、この作業を確認しました。これは、CSS バンドルを 100% の確率で問題なく再生成することで機能します。
ただし、Firefox と Chrome の両方で、Web サーバーにアクセスしているように見えないことがありますが、変更されていない古い CSS を提供し続けます。
奇妙なことに、完全なキャッシュの更新 (ctrl+shift+r) を実行した後でも、クロムにアクセスして *すべての* キャッシュ データを削除しても、まったく同じ古い CSS ファイルが表示されます。
これは、障害/問題が実際にはBundle
ライブラリ内にあると思わせます-フィドラーが異なるリクエストヘッダーまたは何かを渡している可能性があり、Bundle
ハンドラーの動作に一貫性がありませんか?
この問題は何日も続いているので、助けていただければ幸いです。
編集:だから私は働いているように見える次のコードをまとめました
...
var styleBundle = new Bundle(virtualPath, new NoCacheTransform());
...
public class NoCacheTransform : IBundleTransform
{
public void Process(BundleContext context, BundleResponse response)
{
context.EnableOptimizations = false;
context.UseServerCache = false;
response.ContentType = "text/css";//text/css; charset=utf-8
response.Cacheability = HttpCacheability.NoCache;
}
}
これらのプロパティの割り当てのいくつかは必要ないかもしれませんが、注意が必要です。