我正在尝试找到一种方法来发布新版本的单页面javascript应用,而不会要求客户端在部署新版本时刷新页面或清除缓存
我目前在我的javascript应用程序中加载images / css / js文件,因此它包含scripts/671df76d.main.js
之类的引用,这很棒。
所以在我的webapp v0.1 index.html中我有这样的东西:
<script data-main=“scripts/d7ba3e7b.main” src=“bower_components/requirejs/require.js”></script>
在新的v0.2版本中我有这个:
<script data-main=“scripts/671df76d.main” src=“bower_components/requirejs/require.js”></script>
我还尝试了可能影响缓存的元标记。
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
但我从来没有找到一个好的解决方案。有时会显示更新而无需用户手动刷新,有时仍会显示旧内容。让用户看到新内容的唯一方法是让他刷新页面。
由于用户总是通过index.html访问webapp,我注意到有时会选择最新版本(v0.2 with 671df76d.main
),但有时在部署后浏览器仍会加载以前的版本版本
我只是想知道如何保证浏览器不会使用旧scripts/d7ba3e7b.main.js
缓存我的index.html
浏览器的缓存版本index.html
是有意义的,所以它仍然会引用旧的/陈旧的javascript源代码(显然是你不想要的东西)。
从这个意义上讲,你修改资源的事实是无用的。
我是否正确地说,简单地加速index.html
内的资源是不够的,还需要一些额外的东西
这样做的正确方法是什么?同样,目标是允许用户查看新版本,而无需让他们刷新/清除缓存。