首页 > 解决方案 > 是否有状态码告诉浏览器硬刷新当前页面?一些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
})

标签: javascriptexpresshttp

解决方案


推荐阅读