Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
清除azure中javascript的缓存_Javascript_Azure_Caching - Fatal编程技术网

清除azure中javascript的缓存

清除azure中javascript的缓存,javascript,azure,caching,Javascript,Azure,Caching,我肯定这个问题以前有人问过,但我找不到完全相同的问题 我有一个azure云服务,它使用很多javascript文件。我仍在开发该网站,因此javascript文件经常更改。当javascript文件发生更改时,我会清除浏览历史记录,在重新运行代码之前选择“临时Internet文件和网站文件”。然而,该网站似乎坚决保留我的javascript文件,并继续运行旧代码。这是Chrome、IE和Firefox中的一个问题。如果我清除浏览历史记录几次,它最终会找到新代码 我知道有一些方法可以通过更改新版本

我肯定这个问题以前有人问过,但我找不到完全相同的问题

我有一个azure云服务,它使用很多javascript文件。我仍在开发该网站,因此javascript文件经常更改。当javascript文件发生更改时,我会清除浏览历史记录,在重新运行代码之前选择“临时Internet文件和网站文件”。然而,该网站似乎坚决保留我的javascript文件,并继续运行旧代码。这是Chrome、IE和Firefox中的一个问题。如果我清除浏览历史记录几次,它最终会找到新代码

我知道有一些方法可以通过更改新版本的js文件路径来强制浏览器重新加载文件。不过,我只是在测试,不希望每次更改几行代码时都要更新文件名。所以我想要一种清除浏览器中缓存的方法

我也在使用html5离线缓存来缓存我的文件,所以这可能会增加复杂性


如何轻松清除旧的javascript文件?我可以用编程的方式来做这件事吗?

我已经沿着这条路走了好几次,不管怎样,毫无例外,有效的方法是添加一个查询字符串变量。这就是为什么这么多框架(例如jquery、angular)会在ajax的查询字符串中添加一个基于缓存破坏日期的值。由于一个文件更新了,而另一个文件没有更新,每一种其他方法都会导致这样或那样的头痛、浏览器不一致、随机错误

下面是我目前正在使用的一个示例,它在ASP.NET中使用Angular:

@{
     var v = Request.IsLocal ? DateTime.Now.Ticks : ViewBag.Version;
 }

 <script>var version = "@v";
 <script src="/javascript_file.js?v=@v"></script>
@{
var v=Request.IsLocal?DateTime.Now.Ticks:ViewBag.Version;
}
var version=“@v”;
我使用一个局部变量(@v)在文件上设置一个查询字符串值,并使用它设置一个全局JavaScript变量,该变量可在js中用于模板和其他文件

如果我在本地工作,那么我总是得到每个文件的最新版本。部署后,在应用程序启动时设置版本号(出于自动递增目的使用构建版本-以便每个部署的版本构建将具有不同的版本号)

这样做的缺点是,一些未更改的文件需要重新加载,但这比试图告诉数百名用户(点击f5重新加载页面)要好


!我不确定这将如何影响脱机缓存,但我认为同样的情况也可能适用。

您是使用asp.net来呈现页面还是纯html?我有几个asp页面,但我的大多数页面都是html。我很确定,以编程方式(在客户端)无法做到这一点。这可能是在服务器上完成的,对缓存说“嗨”。我仍然认为,将get参数添加到js include中是最简单的,比如
,其中
123
可以是时间戳,并在更新文件时更改它。我认为通过gulp或grunt,您可以轻松地更新这些参数。好吧,让我们忘记以编程方式进行更新。我知道更改文件名是可行的,但这需要付出努力-我的脱机清单文本文件中列出了所有文件,所以不要认为时间戳可以轻松更改所有这些文件。我想要的只是在打开浏览器时清除js文件缓存的方法。“清除浏览历史记录”不起作用有什么原因吗?在IE中,我过去只需要刷新页面就可以导入新文件,但这似乎不再有效。也许?