• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    浅析IE浏览器关于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的缓存机制,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    您可能感兴趣的文章:
    • 解析浏览器端的AJAX缓存机制
    • 浅谈Ajax的缓存机制
    • 获取IE浏览器Cookie信息的方法
    • JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
    • 完美解决IE9浏览器出现的对象未定义问题
    • Javascript在IE和Firefox浏览器常见兼容性问题总结
    • python3实现读取chrome浏览器cookie
    • bootstrap3 兼容IE8浏览器!
    上一篇:ajax异步读取后台传递回的下拉选项的值方法
    下一篇:Fly拦截全局Ajax请求的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    浅析IE浏览器关于ajax的缓存机制 浅析,浏览器,关于,ajax,的,