这篇文章主要介绍了IE浏览器关于ajax的缓存机制,文中给大家提到了Ajax解决浏览器的缓存问题,解决方法有很多种,需要的朋友可以参考下

IE浏览器对于同一个URL只返回相同结果。因为,在默认情况下,IE会缓存ajax的请求结果。对于同一个URL地址,在缓存过期之前,只有第一次请求会真正发送到服务端。大多数情况下,我们使用ajax是希望实现局部刷新的,所以这就牵扯到一个改进的问题。

如果想每次都获取到最新数据,我们只需保证每次传入的URL不一样。最简单的方法就是通过给url拼接参数。利用math函数的random()方法生成随机数。

比如访问百度www.baidu.com,我们就可以把地址写成www.baidu.com?t=Math.random();或者?t=new Date().getTime();

********************************分割线**********************************

说到这里,不妨复习一下ajax的基本用法。

*Ajax创建对象:   

 var xmlhttp;
 if (window.XMLHttpRequest){
  //IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
  } else{
  //IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }  
 

*Ajax请求:

//GET请求:
xmlhttp.open("GET","test1.txt",true);
xmlhttp.send();
//POST请求:
xmlhttp.open("POST","demo_post.asp",true);
xmlhttp.send();

GET 还是 POST?

与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。

然而,在以下情况中,请使用 POST 请求:

无法使用缓存文件(更新服务器上的文件或数据库)
向服务器发送大量数据(POST 没有数据量限制)
发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

*Ajax响应:

要获得服务器的响应,需要使用XMLHttpRequest 对象的 responseText 或 responseXML 属性。

ResponseText:获得字符串形式的响应数据。

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

ResponseXML:获得XML形式的响应数据。

如果来自服务器的响应是 XML,而且需要作为 XML 对象进行解析。

*Ajax - onreadystatechange : 

当请求被发送到服务器时,我们需要执行一些基于响应的任务。

每当 readyState 改变时,就会触发 onreadystatechange 事件。

在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。

当 readyState 等于 4 且状态为 200 时,表示响应已就绪:

xmlhttp.onreadystatechange=function()
 {
 if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
  document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
  }
 }

补充:下面看下浅谈Ajax解决浏览器的缓存问题

Ajax能提高页面载入速度的主要原因是通过Ajax了重复数据的载入,也即在载入数据的同时将数据缓存到内存中,一旦数据被加载,只要没有刷新页面,这些数据就会一直被缓存在内存中,当提交的URL与历史的URL一致时,就不需要提交给服务器,也即不需要从服务器获取数据,虽然了服务器的负载,提高了用户体验,但不能获取最新的数据。为了保证读取的信息都是最新的,需要禁止其缓存功能。

解决方案有如下几种:

① 在Ajax发送请求前加上anyAjaxObj.setRequestHeader("If-Modified-Since", "0")。

② 在Ajax发送请求前加上anyAjaxObj.setRequestHeader("Cache-Control", "no-cache")。

③ 在URL后加上一个随机数:"fresh=" + Math.random();。

④ 在URL后加上时间搓:"nowtime=" + new Date().getTime();。

⑤ 如果是使用jQuery,则用$.ajaxSetup({cache:false})。这样页面的所有Ajax都会执行该语句而不需要保存缓存记录。

总结

以上所述是小编给大家介绍的IE浏览器关于ajax的缓存机制,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对爱安网网站的支持!

最新资讯
美国建筑创企Katerra融资7亿美元 软银领投

美国建筑创企Katerra

据知情人士透露,软银集团的愿景基金将领投这一轮7亿美
“马桶MT”:用户过多致服务器负载,正在扩容

“马桶MT”:用户过多致

快播王欣的社交新品“马桶MT”官网发文称,由于体验的用
物联网守卫战:企业如何应对僵尸网络攻击

物联网守卫战:企业如何

物联网设备将在2019年成为恶意软件攻击的主要目标。这
安卓用户终于要有自己的“iMessage”了

安卓用户终于要有自己

短信这件破事,第一个想明白的居然是Google。
阿里影业战略投资韩寒的亭东影业

阿里影业战略投资韩寒

1月9日,亭东影业获得战略投资,投资方为阿里影业。
WhatsApp漏洞无故删除用户聊天记录 安卓用户受影响

WhatsApp漏洞无故删除

WhatsApp去年出现的漏洞会按时间顺序清除用户的信息记
最新文章
解决ajax异步请求返回的是字符串问题

解决ajax异步请求返回

这篇文章主要介绍了解决ajax异步请求返回的是字符串问
Ajax引擎 ajax请求步骤详细代码

Ajax引擎 ajax请求步

这篇文章主要为大家详细介绍了Ajax引擎 ajax请求步骤
Ajax实现表格中信息不刷新页面进行更新数据

Ajax实现表格中信息不

这篇文章主要为大家详细介绍了Ajax实现表格中的信息不
ajax实现页面的局部加载

ajax实现页面的局部加

这篇文章主要为大家详细介绍了ajax实现页面的局部加载
爬取今日头条Ajax请求

爬取今日头条Ajax请求

今天小编就为大家分享一篇关于爬取今日头条Ajax请求的
$.ajax中contentType: “application/json” 的用法详解

$.ajax中contentType:

这篇文章主要介绍了$.ajax中contentType: “applicati