乐趣区

IE浏览器会缓存GET请求

起因
IE 浏览器会缓存网页中的 GET 和 XHR 的内容,请求方式是 get 方式时,IE 浏览器会进行识别。如果该 get 请求的 url 是第一次请求的话,会请求服务器,从数据库中获取数据;如果该 get 请求的 url 不是第一次请求的话,那么该 url 就不会请求服务器,IE 浏览器会直接从缓存中拿到上次该 url 获取的数据。无论是什么插件的 get 方式请求,IE 浏览器都会这样进行处理的,从而导致数据不同步。
解决方案
1. 在 get 请求的 url 中增加随机标识(推荐)
在请求后拼接随机数或者时间戳,使两次请求的 url 不一致,浏览器就不会从缓存中读取数据

2. 在 axios 中设置 header,ajax 可以用 setRequestHeader 方法(推荐)
const api = axios.create({
// …
headers: {
‘Cache-Control’: ‘no-cache’
}
// …
})

3. 修改浏览器配置(只能暂时解决问题)
Internet 选项 >> 浏览历史记录 >> 设置 >> Internet 临时文件的选项改为‘每次访问网页时’

4. 在服务端设置 header(“Cache-Control: no-cache, must-revalidate”)(看情况)
5. 改为 post 接口(不推荐)

退出移动版