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

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ajax调用中ie缓存问题解决方法

    本文实例分析了ajax调用中ie缓存问题解决方法。分享给大家供大家参考,具体如下:

    ajax请求调用的过程中发现的问题:后台请求是一个简单的.aspx文件,而这个页面又没有考虑过缓存的影响,使用ajax调试的时候发现有时候根本不走后台代码直接返回结果了,所以估计是受到浏览器缓存的影响。网上搜了一下,果然是缓存的问题:“IE中如果XMLHttpRequest提交的URL与历史一样则使用缓存,根本不向服务器端提交。因此无法取到刚提交的数据或新的数据”。

    解决方法大致有下面几种:

    1、只改进服务器端

    (1)后台是简单的.aspx文件,直接加上

    复制代码 代码如下:
    %@ OutPutCache Location="None"%>
    即可。

    (2)但是如果后台是.ashx文件通常在类里直接修改缓存设置。

    复制代码 代码如下:
    context.Response.Cache.SetCacheability(HttpCacheability.NoCache);

    2、只改进客户端

    (1)利用加随机数或加时间戳改变请求地址

    a、加随机数:

    复制代码 代码如下:
    var url='AjaxOperations.aspx?rdm='+Math.random()+'action='+op;

    b、加时间戳:
    复制代码 代码如下:
    var url='AjaxOperations.aspx?dtStamp='+new Date().getTime()+'action='+op;

    这一种解决方案,只需要加个时间或随机数作为参数,服务器端不需要任何改动就可以达到目的。

    (2)前台异步调用设置XMLHttpRequest对象的属性

    在XMLHttpRequest发送请求之前加上

    复制代码 代码如下:
    XMLHttpRequest.setRequestHeader("If-Modified-Since","0")
    个人认为这个才是“正道”。因为你不能明确哪些ajax请求是需要还是不需要缓存的(解决网站的性能瓶颈,利用有缓存的ajax居多),所以每次在发送请求的时候确认一下是否要缓存,相对于2中的第(1)条显然少写了一个url参数,而且服务器端(改进方法1)也不需要改变设置,但是对于已经封装好的ajax库,你可能已经不能在外面直接使用XMLHttpRequest对象了,通常的设置语法可能是将("If-Modified-Since","0")作为参数传递:ajaxObj.sendPost(其他参数列表,...."If-Modified-Since","0"); (post方式)

    或者 ajaxObj.sendGet(其他参数列表,...."If-Modified-Since","0"); (get方式)

    希望本文所述对大家ajax程序设计有所帮助。

    您可能感兴趣的文章:
    • ajax+php控制所有后台函数调用
    • jQuery Ajax调用WCF服务详细教程
    • jQuery调用ajax请求的常见方法汇总
    • 使用ajax技术无刷新动态调用新浪股票实时数据
    • jQuery ajax调用WCF服务实例
    • ajax的定时调用每5秒调用一次
    • iframe式ajax调用示例代码
    • jquery中的ajax方法怎样通过JSONP进行远程调用
    • JavaScript调用ajax获取文本文件内容实现代码
    • iframe式ajax调用示例
    • jquery.Ajax()方法调用Asp.Net后台的方法解析
    • ajax调用简单实例
    上一篇:基于ajax的简单搜索实现方法
    下一篇:AJax与Jsonp跨域访问问题小结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    ajax调用中ie缓存问题解决方法 ajax,调用,中,缓存,问题,