【问题标题】:How can we enable caching for Bundles in MVC5我们如何在 MVC5 中为 Bundles 启用缓存
【发布时间】:2015-04-01 06:43:25
【问题描述】:

我在我的 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;
    }

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

【问题讨论】:

标签: asp.net-mvc-4 bundling-and-minification


【解决方案1】:

MVC 包以单个静态文件的形式返回给默认缓存时间设置为 1 年的浏览器。 ASP.NET MVC 负责跟踪包文件的更改,并在更改任何文件的内容或从包中添加/删除文件时更改包 url。

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

编辑(回应评论)

很遗憾,您无法更改该限制。缓存限制由BundleHandler 类的ProcessRequest 方法处理,这是internal sealed,因此您不可能继承\ 覆盖这些请求。

更多详情可以refer this question

【讨论】:

  • 感谢萨米尔的反馈
  • 查看 stackoverflow.com/a/34508048/1545567 以控制缓存持续时间
【解决方案2】:

在 webconfig 中添加一个键

<appSettings>  
<add key="Version" value="sa291988" />  
</appSettings>

创建一个类,我们在其中定义 JavaScript 和样式的格式。 使用 System.Configuration;

namespace BundlingSample   
{  
public class SiteKeys {  
    public static string StyleVersion {  
        get {  
            return "<link href=\"{0}?v=" + 
ConfigurationManager.AppSettings["version"] + "\" rel=\"stylesheet\"/>";  
        }  
    }  
    public static string ScriptVersion {  
        get {  
            return "<script src=\"{0}?v=" + 
ConfigurationManager.AppSettings["version"] + "\"></script>";  
        }  
    }  
}  
}

@Styles.RenderFormat(SiteKeys.StyleVersion,"~/Content/css") 
@Scripts.RenderFormat(SiteKeys.ScriptVersion,"~/bundles/jquery")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-07
    • 2022-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 2016-09-30
    相关资源
    最近更新 更多