Ajax缓存的问题

昨天被问到如何防止Ajax缓存的问题竟然没想到过,Ajax的本质就是将状态保存在客户端,因此资源的缓存和再利用是他的优势所在,但有时候不希望被缓存,例如计数器,不同请求的计数器得到的结果应该是最新的。在线时长也应该每次刷新不一样。

解决办法是在请求的参数(url)后面加个随机时间,防止缓存

url=url+ "?r= "+Math.random();//请求地址变化,防止缓存
REQ.open(HttpMethod,url,true);

-----------------------

------------方法一: ------
Ajax缓存问题

(转载)

今日在做Ajax的项目,发现一个问题:提交数据后,取不回提交的数据。郁闷多时,仔细分析,发现后台日志没有取数据的消息,前端也没有出现“正在读入数据”的提示。因此觉得应该是系统缓存的问题,遂google,解决。方法如下:

方法1:服务器端代码加入response.setHeader("Cache-Control", "no-cache, must-revalidate");

方法2:用JavaScript在Ajax提交的时候加入一个随机数作为URL中的一个参数。req.open(url + "&" + Math.random).

原因:IE中如果XMLHttpRequest提交的URL与历史一样则使用缓存,根本不向服务器端提交。因此无法取到刚提交的数据。

---------------------------------------------------------------------------------------------------------------------------

-------------方法二:-----------------

终于让我找到了一个好办法,那就在ajax发送请求前加上
xmlHTTP.setRequestHeader("If-Modified-Since","0");

怎么样,很简单吧!!之前找的什么在URL家一个随即数什么的,我用了下,不是很好用。

现在就把使用的具体代码贴下来吧!!

CODE:
<html>
<head>
<title>My first ajax programe</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script language="javascript" type="text/javascript">
<!--
var xmlHTTP;
// =======================================
//   Function Name:creatXMLHTTP()
//   Function:Creat XMLHTTPRequest Object
// =======================================
function createXMLHTTP(){
     if(window.ActiveXObject) {
            xmlHTTP = new ActiveXObject('Microsoft.XMLHTTP'); //if IE
     }
     else if(window.XMLHTTPRequest){
        xmlHTTP = new XMLHTTPRequest();
     }
}
function getHTMLinfo(URL){
      
     createXMLHTTP();
          
     xmlHTTP.open("get", URL, true);
     xmlHTTP.onreadystatechange = callHTML;
     xmlHTTP.setRequestHeader("If-Modified-Since","0");
     xmlHTTP.send();
}
function callHTML(){
     if(xmlHTTP.readyState == 4){
        if(xmlHTTP.status ==200){
           alert("服务器返回信息:" + xmlHTTP.responseText);
           document.write(xmlHTTP.responseText); // 将加载html.htm到当前页面
        }
     }    
}
//-->
</script>
</head>
<body>
         <form name="frmTest" action="#">
     <input name="btnShowInfo" type="button" value="显示服务器返回信息" οnclick="getHTMLinfo('http://localhost/html.htm')">
         </form>
</body>
</html>


这里的html.htm大家自己随便写一个页面吧,看看你修改后再来刷当前页面,是不是即时的改变了内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值