c# Bundle Transform Break 缓存

c# Bundle Transform Break cache

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

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

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. 设置context.HttpContext.Response.Cache.SetRevalidation

  2. 设置 response.Cacheability to NoCache 会起作用,但这意味着包永远不会被缓存