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接口(不推荐)

相关推荐