如何判断javascript是否正在缓存中重新加载
我面临的问题是,javascript被缓存在用户的浏览器上,并且在更改进入生产时无法得到更新。由于该站点使用多个嵌入式iFrame,仅使用f5是不够的。我使用的解决方案是首先加载一个脚本,该脚本获取我需要的js文件的所有修改日期,然后将这些日期附加到每个页面的js文件中。每一页看起来都像这样:如何判断javascript是否正在缓存中重新加载,javascript,Javascript,我面临的问题是,javascript被缓存在用户的浏览器上,并且在更改进入生产时无法得到更新。由于该站点使用多个嵌入式iFrame,仅使用f5是不够的。我使用的解决方案是首先加载一个脚本,该脚本获取我需要的js文件的所有修改日期,然后将这些日期附加到每个页面的js文件中。每一页看起来都像这样: <script type="text/javascript" src="get_dates"></script>//returns the dates for each f
<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>
//返回数组中每个文件的日期
document.writeln(“…对所有脚本重复
我的问题是:
- 应该从服务器控制缓存活动
- 或者使用脚本加载器加载其他脚本并应用于不需要缓存的脚本
<script src="source.js?v1.0"></script>
发布2:
<script src="source.js?v2.0"></script>
等等
通过这种方式,您仍然允许客户端缓存js文件,但缓存在特定版本上
在修改日期更改之前,如何判断脚本是否被缓存
只需将过期时间设置为无限期(或者,比方说,1年——这足够长了)。每次Mod
参数更改时,都会请求新文件
html页面的缓存将如何影响这一点
一点也不。不过,get\u dates
脚本的缓存会
使用document.writeln(())是否会影响缓存?例如,如果您编写相同的脚本,它们是否仍会被缓存
不,它不会影响任何内容。结果-引用外部脚本的
节点将是相同的
另请继续阅读我担心get_dates脚本被缓存并打乱了整个过程。由于mod dates是从服务器检索的,因此该脚本被缓存是否重要?即使缓存了,它仍会执行对服务器的调用,而不会缓存返回的正确数据?它们是如何实现的“已从服务器检索"?我猜它们是动态包含在
get_dates
script中的。get_dates脚本发出一个ajax调用,返回该html页面将使用的所有脚本的mod dates OK,然后它取决于ajax响应的缓存,而不是get_dates
脚本。这将是理想的,但需要更新脚本由于该公司不使用版本控制,因此手动输入版本号。我只是觉得编写一次脚本以获取文件修改日期更容易,并且每次需要scriptIMO时都调用它,这不需要任何版本控制,您只需要添加额外的get参数。这不需要更新所有get参数吗我们什么时候推出新版本?