use*_*648 5 javascript caching web-config asp.net-mvc-5
我正在编写一个MVC 5互联网应用程序,并对JavaScript缓存(以及一般的缓存)有疑问.
目前,当我更新视图中引用的JavaScript文件时,当我浏览到视图时,将使用旧的JavaScript代码.如果我然后刷新浏览器,则使用更新的JavaScript代码.
这并不理想,因为用户可能经常浏览到具有旧JavaScript文件的视图,因此,视图可能无法正确显示.
我目前正在引用JavaScript文件,如下所示:
@section Scripts{
<script src="~/Scripts/filename.js"></script>
}
Run Code Online (Sandbox Code Playgroud)
是否有控制缓存的web.config设置?是否有可以帮助缓存的NuGet包?
我该如何解决这种情况?
MVC Bundling为这个问题提供了解决方案。
要利用它,请将其添加到您的App_Start\BundleConfig.cs
文件中:
bundles.Add(
new ScriptBundle("~/bundles/filename")
.Include("~/Scripts/filename.js"));
Run Code Online (Sandbox Code Playgroud)
那么在你看来:
@section Scripts{
@Scripts.Render("~/bundles/filename")
}
Run Code Online (Sandbox Code Playgroud)
在Release
构建中,捆绑包中的所有 Javascript 文件都将从包含其内容散列的唯一 URL 提供。这意味着如果 Javascript 文件在构建之间发生变化,那么捆绑包的 URL 将发生变化,因此浏览器将下载新版本。
该捆绑包还将在未来 1 年提供一个 Expires HTTP 标头 - 提高站点对未来用户访问/页面请求的响应速度。它可以安全地执行此操作,因为当包内容更改时 URL 也会更改。
即使您只在页面中包含一个 Javascript 文件,我仍然会为它创建一个包 - 以利用缓存控制和缩小。
有关更详细的说明,请参阅链接文章中有关“捆绑缓存”的部分。