ajax的get请求时缓存处理解决方法

本文实例讲述了ajax的get请求时缓存处理解决方法。分享给大家供大家参考。具体分析如下:

很多时候在Ajax的get方法调用的时候由于缓存的原因无法及时获取正确的数据,这里就来分析一下解决这一问题的方法:

1. 在url后面添加一个随机数,如:

代码如下:

http://www.test.com?a=a&b=b&r=Math.random();

2. 在url后面添加时间戳:

代码如下:

var t = new Date().getTime();
http://www.test.com?a=a&b=b&t=t

3. 利用XMLHttpRequest对象的setRequestHeader函数来设置If-Modified-Since的值为0,如

代码如下:

xmlHttp.setRequestHeader('If-Modified-Since', 0);

这里要理解If-Modified-Since的含义

4. 使用php的header函数

代码如下:

header('Cache-Control:no-cache, must-revalidate');

设置不使用缓存

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

(0)

相关推荐

  • 浅谈Ajax的缓存机制

    Ajax的缓存机制和浏览器处理资源时的缓存机制是一样的. 三条简单规则: 只要是URL相同的GET请求,浏览器会使用缓存(当然还要看服务器的Cache-Control/Expires/Last-Modified/ETag头的设置). 只要是POST请求,浏览器都不会缓存. Https的请求,浏览器不会缓存(绝大数情况如此,但是也有例外,据说FF浏览器是例外). 补充: 在URL中拼入随机的查询字符串可以使浏览器认为这是一个新的请求,从而不使用缓存. 在Ajax的请求中设置Http头: If-Mo

  • 在(ASP/PHP/JSP/html/js)中禁止ajax缓存的方法集锦

    ajax缓存有好处,但也有坏处,缓存有时候会导致误操作,影响用户体验,若你的WEB项目不需要ajax缓存功能,可按下述方法来禁止ajax缓存. 一.在ASP中禁止ajax缓存: '放在ASP网页最开头部分 Response.expires=0 Response.addHeader("pragma","no-cache") Response.addHeader("Cache-Control","no-cache, must-revalid

  • IE9下Ajax无法刷新数据的缓存问题解决方法

    使用jQuery的getJSON从后台定时获取数据并刷新界面,使用以下方法时,在Chrome,Firefox下没问题,但在IE9下却无法刷新数据 $.getJSON(webApp + "/GetShowData.do?limit=" + limit,function(data){ //****************** } 原因是,在IE9下,进行Ajax请求时,若与之前请求相同,则不会再从浏览器获取数据,而是直接从本地获取,因此,在请求中加上时间戳,IE9便会认为是不同的请求,代码

  • ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题

    在做ajax页面无刷新添加的时候,IE下遭遇Ajax缓存,因为刚开始并不知道IE有这个坏毛病,折腾好久,终于解决问题. 总结一下解决办法: 在IE下用Ajax请求某一页面,通常会因为缓存的原因而返回上一次的结果,造成混乱,[即get方式时,获取数据,因发送参数和地址都一致,故IE浏览器会从缓存中取,而不会去请求服务器端,而post方式因为参数的不同,不会产生这个问题]而FF下不会出现这种情况.为了不受缓存影响,可以这样做: IE访问策略: Internet选项--浏览历史记录--设置-- Int

  • Ajax清除浏览器js、css、图片缓存的方法

    做东东时都是把图片在服务器的地址存放在数据库里面,然后到浏览器中显示,但是后来发现了两个问题. 第一:为了安全起见,js是无法读取本地的图片的,不然你写一个js,岂不是可以获取任何人电脑里面的文件了. 第二:图片存在的是在服务器的硬盘上面,而不是在客户的硬盘里面,所以也是取不到的 后来在网上找方法,找的方法,都是各种转换二进制到xml中,的各种高大上的答案,然后本人又实在太懒了,就自己想了一个 方法,就是利用BufferedImage这个类. 开始 首先说说我的思路,就是把本地的图片,加载到内存

  • 如何解决Ajax请求结果的缓存问题说明

    在默认情况下,IE会针对请求地址缓存Ajax请求的结果.换句话说,在缓存过期之前,针对相同地址发起的多个Ajax请求,只有第一次会真正发送到服务端.在某些情况下,这种默认的缓存机制并不是我们希望的(比如获取实时数据),这篇文章就来简单地讨论这个问题,以及介绍几种解决方案.目录 一.问题重现 二.通过为URL地址添加后缀的方式解决问题 三.通过JQuery的Ajax设置解决问题 四.通过定制响应解决问题一.问题重现我们通过一个ASP.NET MVC应用来重现IE针对Ajax请求结果的缓存.在一个空

  • Jquery中Ajax 缓存带来的影响的解决方法

    使用jquery里load方法或者ajax调用页面的时候会存在cache的问题,清除cache的方法: 调用$.ajaxSetup ({cache:false}) 方法即可. 复制代码 代码如下: <script type="text/javascript"> $.ajaxSetup({ cache: false }); </script>

  • Ajax缓存问题的解决方法汇总

    1.在ajax发送请求前加上 anyAjaxObj.setRequestHeader("If-Modified-Since","0"). 2.在ajax发送请求前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache"). 3.在URL后面加上一个随机数: "fresh=" + Math.random();. 4.在URL后面加上时间搓:"

  • jQuery ajax cache缓存问题

    在jquery里面用$.ajax 然后, 指定ajax属性的时候, 使用了:'false' . 可恶的javascript特性就在这里出现了. 在jquery里面, 大部分的时候, 属性要用''引起来. 否则容易变成变量名.比如red, 引不引都差不多.但是引起来也可以认. 所以习惯就全部引起来好了. 然而, false是个特例. 如果引起来, 导致的结果: 'false' 按true处理. 因为只有空字串才是true. 例如:在浏览器地址栏输入: javascript:alert('false

  • 防止jQuery ajax Load使用缓存的方法小结

    一.用法 jquery的load函数是请求另一个文件并加载到当前DOM里的调用,load方法的完整格式是:load( url, [data], [callback] )(注意没有参数是GET方式请求,有参数则是 POST方法). * url:是指要导入文件的地址. * data:可选参数:因为Load不仅仅可以导入静态的html文件,还可以导入动态脚本,例如PHP文件,所以要导入的是动态文件时,我们可以把要传递的参数放在这里. * callback:可选参数:是指调用load方法并得到服务器响应

  • Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因

    看到别人写的JS,ajax请求地址后加随机参数,比如XXXX?t= + new Date().getTime(). 一开始搞不懂为什么,网上查了资料,原因是防止浏览器缓存. 浏览器为了提高用户访问同一页面的速度,会对页面数据进行缓存.当url请求地址不变时, 有时候会导致浏览器不发送请求,直接从缓存中读取之前的数据. 如果数据改变了,而没加随机数,读取的数据会跟之前一样. 加上随机数,就是欺骗浏览器url改变了,会每次都向服务器发送请求而不去读缓存

  • ajax 缓存 问题 requestheader

    复制代码 代码如下: var paras="ajaxFlag=getMarkerIDs"; var myAjax=new Ajax.Request( "AddInfoHandler.ashx", {method:'get',parameters:paras,onComplete:showGetMarkerIDsResponse} ); 因为我有一个切换数据库的操作,第一次进数据库A的时候,列表加载正确,点击结点(ajax)地图显示A数据,但点击ie后退再进入数据库B

随机推荐