c#Bundle转换中断缓存

时间:2015-08-05 10:23:05

标签: c# asp.net caching bundling-and-minification asp.net-optimization

我想创建一个bundle变换来修改bundle内容并触发缓存中断,但是我无法破解缓存。

到目前为止,我有以下代码: -

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        StyleBundle bundle = new StyleBundle("~/Content/Global");
        bundle.Transforms.Add(new CacheBreakTransform());
        bundle.Include("~/css/main.css");
        bundles.Add(bundle);
    }
}

public class CachBreakTransform : IBundleTransform
{
    void IBundleTransform.Process(BundleContext context, BundleResponse response)
    {
        if(UpdateNeeded())
        {
            response.Content = GetUpdatedContent(response.Content);
            //cache break needed here
        }
    }
}

我可以更新捆绑包的内容,但如果捆绑包中包含的文件未更改,则捆绑包仍然会被缓存,并且不会使用更新的内容。我希望能够打破捆绑缓存,以便始终使用更新的内容。

1 个答案:

答案 0 :(得分:0)

两个选项

  1. 设置context.HttpContext.Response.Cache.SetRevalidation

  2. response.Cacheability设置为NoCache会有效,但这意味着捆绑包永远不会被缓存