我有一个angular2单页应用。我想在将新版本滚动到生产服务器时提示用户重新加载页面。我听说过AppCache。我听说过服务工作者。
此操作的公认惯例是什么?
您通过哪个流程来检测更改,然后强制刷新?
浏览器中是否有支持此内容的内容?
谢谢。
答案 0 :(得分:1)
Idon不知道是否有标准练习,但这里是我成功完成的一次,成功:
当我部署版本123时,我确保主index.html文件包含以下行:
<script>var MYAPP_VERSION=123;</script>
并且后端作为AJAX请求的所有响应的标头发送标头x-myapp-version=123
。
在应用程序中(angular1,但你可以使用angular 2类似的东西),每次我从后端收到一个AJAX响应时,我会检查标题中的版本是否与MYAPP_VERSION中的版本相同。
如果版本不同,则表示已部署新版本,但用户仍在使用旧版本(即尚未刷新主页面)。然后我显示一条警告消息或一个弹出窗口(或我强制刷新),以确保页面刷新。这与JS文件和模板中的哈希版本(或适当的缓存配置)相结合,可以确保用户获得新版本的文件。