我们如何在MVC5中为Bundles启用缓存

1 asp.net-mvc-4 bundling-and-minification

我在我的mvc项目中创建了2个包,如下所示:

 public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/Scripts/BaseScripts").Include(
            "~/Content/js/jquery-{version}.js",
            "~/Content/js/jquery-ui-{version}.js",
            "~/Scripts/jquery.unobtrusive-ajax.min.js",
            "~/Content/js/bootstrap.js",
             "~/Content/js/bootstrap-datepicker.js",
              "~/Scripts/jquery.validate.min.js",
              "~/Scripts/jquery.validate.unobtrusive.js",
              "~/Scripts/customvalidation.js"

            )
        );

        bundles.Add(new ScriptBundle("~/Scripts/CustomScripts").Include(
                        "~/Content/js/customscripts/commonscript.js",
          "~/Content/js/customscripts/registration.js"
        ));

        bundles.Add(new StyleBundle("~/Styles/Css").Include(
            "~/Content/css/bootstrap.min.css",
            "~/Content/css/ymobiz.css",
            "~/Content/css/Style.css",
            "~/Content/css/datepicker3.css",
            "~/Content/font-awesome-4.1.0/css/font-awesome.min.css",
            "~/Content/css/css.css"
            ));


        //To enable bundling and minification
        BundleTable.EnableOptimizations = true;
    }
Run Code Online (Sandbox Code Playgroud)

现在我还需要为这些文件启用缓存.有什么方法可以控制这些bundle文件的缓存持续时间

Sam*_*azi 7

MVC包作为单个静态文件返回到默认情况下缓存时间设置为1年的浏览器.如果更改任何文件的内容或从bundle中添加/删除文件,ASP.NET MVC将负责更改bundle文件的跟踪并更改bundle url.

由于捆绑包已经被缓存并且更改跟踪由asp.net mvc框架维护,您还希望在这些捆绑包上还有哪些缓存控制?

编辑(回应评论)

不幸的是,你不能改变这个限制.缓存限制是按类ProcessRequest方法处理的,因此不可能继承\覆盖这些请求.BundleHandlerinternal sealed

有关详细信息,请参阅此问题.