【问题标题】:How can I enable caching for Bundles in MVC5 [duplicate]如何在 MVC5 中为 Bundles 启用缓存 [重复]
【发布时间】:2018-11-02 08:54:36
【问题描述】:

我在我的 MVC 项目中创建了样式和脚本包,如下所示。现在我还需要为包启用缓存。有什么方法可以控制这些包的缓存持续时间吗?

bundles.Add(new StyleBundle("~/bundles/css").Include(
  "~/lib/bootstrap/css/bootstrap.min.css",                                                        
  "~/lib/owlcarousel/owl.carousel.min.css",
  "~/lib/owlcarousel/owl.theme.default.min.css",
  "~/StylesCdn/google-font.css",
  "~/assests/css/common.min.css"
));

bundles.Add(new StyleBundle("~/bundles/bottomcss").Include(                            
  "~/lib/chartist/scss/chartist.min.css",
  "~/lib/chartist/chartist-plugin-tooltip.min.css",                            
  "~/StylesCdn/export.min.css"
));

bundles.Add(new ScriptBundle("~/bundles/js").Include(
  "~/lib/bootstrap/js/jquery.min.js",
  "~/assests/js/homelayout.min.js"
));

bundles.Add(new ScriptBundle("~/bundles/bottomjs").Include(
  "~/lib/bootstrap/js/bootstrap.min.js",
  "~/lib/owlcarousel/owl.carousel.min.js",
  "~/assests/js/app.min.js",
  "~/Content/Validation.min.js",
  "~/assests/js/InvestmentCalculator.min.js",
  "~/assests/js/common.min.js",
  "~/assests/js/BindDate.min.js"               
));

【问题讨论】:

  • 如果您检查浏览器发出的请求,您会看到它们的响应为 304 Not modified
  • 你读过这个问题吗? stackoverflow.com/questions/28275725/…
  • 实际上,我不知道捆绑包的缓存,所以,让我给出一个正确的解决方案来做什么以及如何去做。
  • 是的,我读过这个问题,但我还没有找到我的解决方案.. @SyntaxError
  • 不确定您所说的“找到解决方案”是什么意思,因为默认情况下会缓存捆绑包。您的代码已经完成了您的要求。

标签: c# asp.net-mvc asp.net-mvc-5 bundle


【解决方案1】:

好的,所以其他答案似乎并不完全正确。您可以通过更改 web.config 中的“staticContent”元素来影响浏览器尝试缓存这些文件的方式。 (前提是您使用的是 IIS7 或更高版本)

这会影响将提供哪些缓存标头静态内容(例如图像/脚本)。例如您可以通过设置以下内容来提供 max-age 标头和日期:

<staticContent>
  <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="1.00:00:00" />
</staticContent>

可以在此处的文档中找到关于可以设置什么的进一步阅读:

https://docs.microsoft.com/en-us/iis/configuration/system.webserver/staticcontent/clientcache

【讨论】:

    【解决方案2】:

    如前所述,在大多数(如果不是全部)情况下,捆绑包源将缓存在服务器和浏览器中(但这取决于您使用的实际服务器软件)。

    “但是当我重新加载页面时,它每次都会呈现”

    捆绑本身不渲染,它们是解析(它们是JS / CSS资源)。之后,解析结果用于渲染页面。

    JS / CSS 解析步骤是否有效(有或没有“缓存”解析结果)取决于浏览器的实现,并且不可能通过服务器端编程、脚本或设置来影响。

    【讨论】:

      【解决方案3】:

      默认情况下,浏览器会缓存捆绑包,除非您手动禁用它。服务器端无能为力。

      【讨论】:

        猜你喜欢
        • 2015-04-01
        • 2022-07-28
        • 1970-01-01
        • 1970-01-01
        • 2019-12-09
        • 2016-09-30
        • 1970-01-01
        • 2011-03-02
        • 2016-08-26
        相关资源
        最近更新 更多