3

ここで何が起こっているのか、私は本当に混乱しています。

(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;
    }
}

これらのプロパティの割り当てのいくつかは必要ないかもしれませんが、注意が必要です。

4

2 に答える 2

1

バンドルのフィンガープリントを取得すると役立つ場合がありますか? 詳細については、 http://madskristensen.net/post/cache-busting-in-aspnetを参照してください。

于 2013-11-19T11:27:57.157 に答える
0

私の推測では、これはバグです。同様の動作が見られます。そして、このオープンを説明しているように見えるさまざまなバグがあります。悲しいことに、ソースは公開されておらず、MS に問い合わせたところ、これを再現できませんでした。だからそれは未修正になりました:(

https://aspnetoptimization.codeplex.com/workitem/120 https://aspnetoptimization.codeplex.com/workitem/96 https://aspnetoptimization.codeplex.com/workitem/114

于 2014-11-21T11:27:40.723 に答える