MVC 5 JavaScript Caching
MVC 5 JavaScript Caching
我正在编写一个MVC 5互联网应用程序,对JavaScript缓存(以及一般的缓存)有一个问题。
目前,当我更新视图中引用的JavaScript文件时,当我浏览到该视图时,会使用旧的JavaScript代码。如果我刷新浏览器,则会使用更新后的JavaScript代码。
这并不理想,因为用户可能经常浏览到具有旧JavaScript文件的视图,因此,该视图可能无法正确显示。
我目前引用的JavaScript文件如下:
@section Scripts{
<script src="~/Scripts/filename.js"></script>
}
是否有控制缓存的web.config设置?有没有NuGet包可以帮助缓存?
我该如何解决这种情况?
MVC捆绑提供了一个解决此问题的方案。
要利用它,请将其添加到您的App_Start'BundleConfig.cs
文件中:
bundles.Add(
new ScriptBundle("~/bundles/filename")
.Include("~/Scripts/filename.js"));
那么在你看来:
@section Scripts{
@Scripts.Render("~/bundles/filename")
}
为什么这有帮助
在Release
构建中,捆绑包中的所有Javascript文件都将通过一个唯一的URL提供服务,该URL包含其内容的哈希。这意味着,如果Javascript文件在不同版本之间发生变化,那么捆绑包的URL就会发生变化,因此浏览器会下载新版本。
该捆绑包还将在未来一年内提供Expires HTTP标头,从而提高网站对未来用户访问/页面请求的响应速度。它可以安全地做到这一点,因为当捆绑包内容发生变化时,URL也会发生变化。
即使你在一个页面中只包含一个Javascript文件,我仍然会为它创建一个捆绑包——以利用缓存控制和缩小功能。
请参阅链接文章中关于"Bundle Caching"的部分,以获得更详细的解释。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- 这是什么 ==- javascript 运算符
- 从javascript创建一个列表
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Javascript:selenium Web驱动程序isDisplayed()不工作
- 如何通过ajax刷新JSF填充的javascript变量
- 如何在Javascript中将JSon对象转换为数组
- Javascript生成的表单未提交
- MVC 5 JavaScript Caching
- Apache + Centos 6.6 caching javascript