Ajax页面缓存
来源:互联网 发布:小米电视 知乎 编辑:程序博客网 时间:2024/06/06 14:19
Ajax页面缓存是ajax处理数据时对一些重复相同数据进行一个缓存操作,这种设计使客户端对一些静态页面内容的请求,比如图片,css文件,js脚本等,变得更加快捷,提高了页面的响应速度,也节省了网络通信资源。
但有时候如果通过Ajax对一些后台数据进行更改的时候,虽然数据在后台已经发生改变,但是页面缓存中并没有改变,对于相同的URL,Ajax提交过去以后,浏览器还只是简单的从缓存中拿数据,这种情况当然就不行了。
缓存问题主要是在IE下的GET请求方式。
禁止页面缓存问题:
1. url参数添加随机数或时间戳
该方式会在客户端产生大量缓存文件。
//随机数
var url = 'demo.php?username=' + username + '&_=' + Math.random();
//时间戳
var url = 'demo.php?username=' + username + '&_=' + new Date().getTime();
2. 修改文件最后更改时间 If-Modified-Since
setRequestHeader("If-Modified-Since","0");
这样和服务器上文件的最后修改时间肯定不一样,所以不会访问缓存文件,而是会重新访问服务器.
这种方式只会在客户端上产生一个缓存文件;
var xhr = createXhr(); //创建对象
xhr.open('get' , url); //初始化对象
xhr.setRequestHeader('If-Modified-Since', '0'); //主动修改文件最后更改
//...
3. 禁用缓存
客户端设置: 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader(“Cache-Control”,”no-cache”);
服务器端设置:在服务端加 header(“Cache-Control: no-cache, must-revalidate”);
但有时候如果通过Ajax对一些后台数据进行更改的时候,虽然数据在后台已经发生改变,但是页面缓存中并没有改变,对于相同的URL,Ajax提交过去以后,浏览器还只是简单的从缓存中拿数据,这种情况当然就不行了。
缓存问题主要是在IE下的GET请求方式。
禁止页面缓存问题:
1. url参数添加随机数或时间戳
该方式会在客户端产生大量缓存文件。
//随机数
var url = 'demo.php?username=' + username + '&_=' + Math.random();
//时间戳
var url = 'demo.php?username=' + username + '&_=' + new Date().getTime();
2. 修改文件最后更改时间 If-Modified-Since
setRequestHeader("If-Modified-Since","0");
这样和服务器上文件的最后修改时间肯定不一样,所以不会访问缓存文件,而是会重新访问服务器.
这种方式只会在客户端上产生一个缓存文件;
var xhr = createXhr(); //创建对象
xhr.open('get' , url); //初始化对象
xhr.setRequestHeader('If-Modified-Since', '0'); //主动修改文件最后更改
//...
3. 禁用缓存
客户端设置: 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader(“Cache-Control”,”no-cache”);
服务器端设置:在服务端加 header(“Cache-Control: no-cache, must-revalidate”);
阅读全文
0 0
- AJAX防止页面缓存
- AJAX防止页面缓存
- AJAX防止页面缓存
- Ajax 页面缓存原理
- Ajax页面缓存
- 解决Ajax页面缓存问题
- 页面缓存, jsp 缓存, html 缓存, ajax缓存,解决方法
- 页面缓存, jsp 缓存, html 缓存, ajax缓存,解决方法
- 页面缓存, jsp 缓存, html 缓存, ajax缓存,解决方法
- SSH Ajax 页面缓存 页面刷新问题
- 解决ajax页面缓存的问题
- AJAX防止页面缓存的代码
- 解决ajax页面缓存的问题
- Ajax获取页面被缓存的解决方法
- Ajax获取页面被缓存的解决方案
- Ajax页面缓存问题分析与解决办法
- Ajax页面缓存问题分析与解决办法
- Ajax页面缓存分析与解决
- Memcache的详细讲解
- 移动web 1像素边框
- Java序列化和文件的输入/输出
- java高并发
- mongodb无法启动
- Ajax页面缓存
- centos下安装多个mysql数据库
- tensorflow 学习随记
- 反正也没人看,自己写写当作笔记----复制GDB数据库
- Python学习随笔三:判断分支与循环语句
- sql 数据查询返回值问题
- Java编程语言基础
- HTML5介绍
- HTML5-canvas标签