Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MVC5JavaScript缓存_Javascript_Caching_Web Config_Asp.net Mvc 5 - Fatal编程技术网

MVC5JavaScript缓存

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

我正在编写一个MVC5互联网应用程序,对JavaScript缓存(以及一般的缓存)有一个问题

当前,当我更新视图中引用的JavaScript文件时,当我浏览到该视图时,会使用旧的JavaScript代码。如果随后刷新浏览器,则会使用更新的JavaScript代码

这并不理想,因为用户可能经常浏览到包含旧JavaScript文件的视图,因此,该视图可能无法正确显示

我目前引用的JavaScript文件如下:

@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或缓存破坏。