我遇到了javascript被缓存在用户浏览器上的问题,并且在更改投入生产时没有得到更新。由于该网站使用多个嵌入式iframe,因此仅使用f5是不够的。我使用的解决方案是先加载一个脚本,获取我需要的js文件的所有修改日期,然后将这些日期附加到每个页面的js文件中。每个页面看起来像这样:
<script type="text/javascript" src="get_dates"></script>//returns the dates for each file in array
<script type="text/javascript">
document.writeln('<script type="text/javascript" src="' + some_path + '?Mod=' + date_array[pos] + '"></script>...repeat for all scripts
</script>
我的问题是:
答案 0 :(得分:0)
答案 1 :(得分:0)
将版本控制应用于每个生产版本中的js文件。 让我们说
Release1:
<script src="source.js?v1.0"></script>
Release2:
<script src="source.js?v2.0"></script>
依旧......
这样您仍然允许客户端缓存您的js文件,但是在特定版本上。
答案 2 :(得分:0)
如何在mod日期更改之前判断脚本是否已缓存?
只需将到期时间设置为无穷大(或者说,1年 - 足够长)。每次Mod
参数更改时,都会请求新文件。
html页面的缓存将如何影响这个?
完全没有。但是,get_dates
脚本的缓存将会出现。
使用document.writeln(()会影响缓存吗?即使你编写完全相同的脚本,它们仍会被缓存吗?
不,它不会影响任何事情。结果 - 引用外部脚本的<script>
节点将是相同的。