javascript - 是否有状态码告诉浏览器硬刷新当前页面?一些3xx?
问题描述
注意:我无法更改客户端,因为它已缓存/api
但未缓存。
我的页面的主要 html 和 javascript 有一个一年的缓存控制标题。发布新版本时,客户端不会更新,因为缓存策略太长。虽然我已经为将来的访问调整了缓存策略,但现有用户在他们硬刷新他们的页面之前不会更新。
这意味着我无法更改客户端代码(已缓存),但我可以更改响应,/api
因为/api/*
路径未缓存。
客户端向服务器发送一个内部版本号,服务器可以使用该内部版本号来确定哪个版本的客户端发出了请求。
如果在/api/login
端点上我拦截了请求并检查内部版本号以查看它是否是当前的,我可以用某种状态代码来响应请求,告诉浏览器硬刷新吗?
例如,我可以做这样的事情:
app.post('/api/login', (req, res) => {
// add a check that responds with a 302 to the current page if the build number is old
if (req.headers['x-app-buildno'] !== 'latest build no') {
res.setHeader('localtion', req.headers.host)
res.sendStatus(302)
return
}
// normal logic
})
解决方案
推荐阅读
- javascript - 将文本从一个框移动到另一个框
- django - django 模板中的 Trans 标记无法正常工作
- html - 调整窗口大小时图像尺寸缩小
- javascript - 如何在 JavaScript 中替换文件中的文本
- android - 屏障不动的原因
- c++ - Arduino中带有构造函数的对象组合
- python - One-Hot-Encoding 训练和测试数据时的形状不匹配。在将 get_dummies 与管道一起使用时,Train_Data 比 Test_data 具有更多的虚拟列
- javascript - keyUp 在没有 keyPress 的情况下触发
- r - 在 R 中使用数值迭代器改进收敛算法
- .net - 通过 TLS 1.2 协议调用 REST 请求期间的问题