XmlHttp / XmlHttpRequest 避免缓存

对于实时性的数据 必须不能缓存。

方法一:加If-Modified-Since
xmlhttp多次调用时它却总是显示缓存页面, 尝试在 php 或 asp 中加入相应的http头明确不要缓存, 也没什么效果!!
现在终于找到一个办法啦,就是在 xmlhttp.open 之后发送一个If-Modified-Since 头 即可, 代码如下
      xmlhttp.setRequestHeader('If-Modified-Since', '0');

方法二:请求URL后加变化参数
      js:     URL = "http://host/a.php"+"?"+Math.random();
      vbs:   URL = "http://host/a.php"&"?"&Timer()


推荐使用方法一,简洁灵活,不影响URL参数。
方法二的问题在于,URL本身可能带有一些参数,那就要判断是加"?"还是加"&"了。

 

 

原帖:http://www.cnblogs.com/cuixiping/articles/1118246.html

 

 

Ajax清理缓存的方法

1、在服务端加 header("Cache-Control: no-cache, must-revalidate");   2、在ajax发送请求前加上 xmlHttp.setRequestHeader("If-Modified-Since","0");   3、在ajax发送请求前加上 xmlHttp.setRequestHeader("Cache-Control","no-cache");   对于2和3也就是这样实现:
  function changepass(upass) {
   createXMLHttpRequest();
  var url = "cpass.asp?uid=" + upass ;
   xmlHttp.open("GET", url, true);
  xmlHttp.on

readystatechange = callback;
  xmlHttp.setRequestHeader("If-Modified-Since","0");//清楚ie缓 存------>2
   //xmlHttp.setRequestHeader("Cache-Control","no- cache");//清楚ie缓存------->3
  xmlHttp.send(null);
  }   4、在 Ajax 的 URL 参数后加上 "?fresh=" + Math.random(); //当然这里参数 fresh 可以任意取了  5、第五种方法和第四种类似,在 URL 参数后加上 "?timestamp=" + new Date().getTime();   6、用POST替代GET:不推荐

原帖 http://blog.163.com/prevBlogPerma.do?host=sparkle_tiangz&srl=1175902032009112315230178&mode=prev


在项目中使用ajax,有时会遇到ie缓存的干扰,导致取不到最新的数据。解决的办法有两种:

1.在请求地址的末尾加入一个随机数作为参数,这样就能和上一次的请求区分开来。

2.在XMLHttpRequest发送请求之前加上XMLHttpRequest.setRequestHeader("If-Modified- Since","0") ,然后再使用send方法。

 

附:If-Modified-Since介绍

在http中Last-Modified 与If-Modified-Since 都是用于记录页面最后修改时间的 HTTP 头信息,注意,在这 Last-Modified 是由服务器往客户端发送的 HTTP 头,另一个 If-Modified-Since是由客户端往服务器发送的头,可以看到,再次请求本地存在的 cache 页面时,客户端会通过 If-Modified-Since 头将先前服务器端发过来的 Last-Modified 最后修改时间戳发送回去,这是为了让服务器端进行验证,通过这个时间戳判断客户端的页面是否是最新的,如果不是最新的,则返回新的内容,如果是最新的,则 返回 304 告诉客户端其本地 cache 的页面是最新的,于是客户端就可以直接从本地加载页面了,这样在网络上传输的数据就会大大减少,同时也减轻了服务器的负担。

而且在一些ajax应用中,要求获取的数据永远是最新的,而不是读取位于缓存中的数据,做这样的设置是非常有必要的
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值