为什么后端接口设置了cache-control:no-cache ,请求还是会命中强缓存
如果你用的是nginx,建议同时增加三个header
server{
location / {
...
add_header Pragma no-cache;
add_header Expires 0;
add_header Cache-Control no-cache,no-store,must-revalidate;
}
}
有时光是no-cache不够的,Cache-Control 参数的解释:
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
当你单页应用被重新载入过的话,此时再点浏览器的后退按钮,页面发的请求会无视no-cache的设置,
比如你在a.com,然后在地址栏输入www.baidu.com,此时点浏览器的后退按钮回退到a.com页面,你会发现页面中设置了no-cache的接口也还是从缓存读取了
stackOverFlow上有关于这个问题的讨论还是挺深入的
解决方案有两种
1 后端将cache-control 的值设置为"Cache-Control" = "no-cache, no-store, max-age=0, must-revalidate";
2 前端切路由的时候别重新reload的整个页面