MVC5JavaScript缓存
我正在编写一个MVC5互联网应用程序,对JavaScript缓存(以及一般的缓存)有一个问题 当前,当我更新视图中引用的JavaScript文件时,当我浏览到该视图时,会使用旧的JavaScript代码。如果随后刷新浏览器,则会使用更新的JavaScript代码 这并不理想,因为用户可能经常浏览到包含旧JavaScript文件的视图,因此,该视图可能无法正确显示 我目前引用的JavaScript文件如下:MVC5JavaScript缓存,javascript,caching,web-config,asp.net-mvc-5,Javascript,Caching,Web Config,Asp.net Mvc 5,我正在编写一个MVC5互联网应用程序,对JavaScript缓存(以及一般的缓存)有一个问题 当前,当我更新视图中引用的JavaScript文件时,当我浏览到该视图时,会使用旧的JavaScript代码。如果随后刷新浏览器,则会使用更新的JavaScript代码 这并不理想,因为用户可能经常浏览到包含旧JavaScript文件的视图,因此,该视图可能无法正确显示 我目前引用的JavaScript文件如下: @section Scripts{ <script src="~/Scrip
@section Scripts{
<script src="~/Scripts/filename.js"></script>
}
@节脚本{
}
是否有控制缓存的web.config设置?是否有一个NuGet包可以帮助缓存
如何解决此问题?提供了此问题的解决方案
要利用它,请将此添加到您的App\u Start\BundleConfig.cs
文件中:
bundles.Add(
new ScriptBundle("~/bundles/filename")
.Include("~/Scripts/filename.js"));
那么在你看来,
@section Scripts{
@Scripts.Render("~/bundles/filename")
}
为什么这有帮助
在发布版
构建中,捆绑包中的所有Javascript文件都将从包含其内容哈希的唯一URL提供。这意味着,如果Javascript文件在构建之间发生变化,那么捆绑包的URL将发生变化,因此浏览器将下载新版本
该捆绑包还将在未来1年内提供Expires HTTP头,从而提高网站在未来用户访问/页面请求时的响应速度。它可以安全地做到这一点,因为当捆绑包内容更改时,URL也会更改
即使在一个页面中只包含一个Javascript文件,我仍然会为它创建一个捆绑包——以利用缓存控制和缩小
有关更详细的说明,请参阅链接文章中的“捆绑缓存”部分。这对我不适用。我所有的js文件都捆绑在一起,它仍然使用缓存的“动态”js文件。我不得不将它们从捆绑包中取出,并在querystring中附加一个时间戳。@user609926您在发布版或调试版中看到过这种行为吗?默认情况下,在调试版本中会关闭绑定,因此您不会得到唯一的URL或缓存破坏。