场景:
- 用户已登录。
- 网站已更新。
- 用户缓存了 html/js 并调用了旧端点。世界末日。
我知道网站经常说"产品已更新,请刷新浏览器"。但这通常是如何完成的呢?
我可以想象两种方式:
- 偶尔在导航时调用db,检查存储在角度常量中的版本与存储在db中的版本。如果不匹配,请通知。
- SignalR 推送的某种方案即使浏览器未在网站上执行任何操作也会进行检查。
我错过了什么吗?给定我们的堆栈(请参阅标签)的好方法是什么?
如果你真的不想缓存东西,对于 HTML,你需要将必要的元标记添加到
<meta http-equiv="Cache-control" content="no-cache" />
<meta name="expires" content="wed, 15 Sep 1993">
<meta http-equiv="pragma" content="no-cache" />
对于 JS 引用,您需要通过在文件名后附加令牌来缓存它们,例如:
<script src="/path/to/script/myscript_1234567890.js"></script>
或
<script src="/path/to/script/myscript.js?v=1234567890"></script>