记录一次360浏览器兼容模式下定时刷新(请求接口)的缓存问题
2020-07-03 15:36
316 查看
1.问题产生
因业务需要需要定时请求接口刷新页面数据,发现在chorme,火狐等浏览器能正常使用,而用360兼容模式打开时,只有第一次加载的数据,后续定时刷新数据不变化。
2.问题排查
经查阅资料,发现360 浏览器“极速模式”采用 Blink ( Webkit ) 内核,“兼容模式”采用 Trident 内核 ( IE 内核 ) 。因此在请求方式是 get 方式的时候,浏览器会进行识别,如果该 get 请求是第一次请求的话,会从服务器拿数据;如果不是第一次请求的话,浏览器会从缓存中拿到上一次请求的数据,因此数据无变化。
3.解决方案:
3.1、在 get 请求的 url 后面带上时间戳参数,如:
[code]url: prefix + "/network/equipment?times="+new Date().getTime(),
3.2、进行请求设置,强制要求缓存服务器在返回缓存的版本之前将请求提交到源头服务器进行验证
ajax 使用 setRequestHeader 方法,jQuery 中使用 cache: false 设置,axios中设置header。
[code]// ajax xhr.setRequestHeader("Cache-Control", "no-cache"); xhr.setRequestHeader("Pragma", "no-cache");
[code]// jQuery cache: false 设置 $.ajax({ type: "get", cache: false, url: url, success: function (msg) { } });
[code]// axios const http = axios.create({ // ... headers: { 'Pragma': 'no-cache', 'Cache-Control': 'no-cache' } // ... })
3.3、将get请求改为post请求
相关文章推荐
- 解决360浏览器兼容模式的页面显示问题
- 记录一次Linux定时任务遇到的问题
- 开发网站时解决360浏览器的兼容性问题,兼容模式打不开,让网页默认为极速模式打开
- window.showModalDialog方式/模式窗口数据不刷新(缓存)问题
- 解决360浏览器兼容性问题的极速模式、兼容模式、IE11模式对同一页面的不同兼容性问题
- 用cookie解决页面没有更新缓存只刷新一次页面的问题+跨域问题
- 关于AJAX请求服务器后缓存数据,造成没有及时刷新的问题
- HTTP解读-文件下载、中文乱码、请求重定向、定时刷新、缓存、url编解码、gzip压缩、防盗链等
- jsp页面360浏览器兼容模式不兼容问题解决方法
- 记录一次面试中的HTTP请求相关问题
- 360浏览器兼容模式 不能$.post (不是a 连接 onclick的问题!!)
- 360浏览器兼容模式 - 兼容问题
- [CSS]IE6和360浏览器兼容模式下的兼容性问题
- Angularjs在360兼容模式下取数据缓存问题的解决办法
- 解决360浏览器兼容模式不兼容,极速模式兼容问题
- 问题记录:app第首次安装报SSLHandshakeException,刷新后可以请求到数据
- 解决360浏览器兼容模式的页面显示问题
- 360浏览器兼容模式无法弹出layer对话框问题
- IE8浏览器缓存问题导致Ajax的GET请求只能执行一次的解决办法
- 记录一次SpringBoot项目在IDEA debug模式下启动过慢问题