setInterval与ajax——ajax的缓存问题

简介:

             

在对ajax进行serInterval操作的时候一定要在请求地址后面加上时间戳。

因为在短时间访问同一个URL,会访问缓存。

 

var interval = window.setInterval(function () {
      $.get("../Ajax/CalculateTime.aspx?time=" + new Date().getMilliseconds(),

          {  aid: aid },

          function (data, status) {
          ...............................................

         })
      }, 1000);

 

转载了一个ajax缓存的问题的文章

最近做项目,一直碰到缓存的问题。一些小技巧和大家分享一下。因为基本要求是做到IE和火狐浏览器兼容,一直用火狐测试,没发现缓存的问题,到IE里面出现了缓存的问题。
       

 如果是直接用jQuery里的$.ajax()方法的话,如果要去除缓存很简单,只要配置一下缓存属性cache为false,但是如果想要简单写法 getJSON(),那么去除缓存就不能通过配置来解决了。因为getJSON根本没有这个缓存属性让你来配置。因为如果其调用的地址URL和之前的一样的话,回调函数会直接在缓存里面读取数据,而不是进后台调用相应的方法。
       

知道了原因,解决方法就是让他的每次请求的URL地址不一样就行,但是同时又要不影响请求的服务所需要的数据,那么可以有一下几种方法:
       

1、$.getJSON("URL?t="+new Date(),function(json){});就是原有的URL基础上加一个时间变量,每次的请求地址就不一样了。
       

2、$.getJSON("URL?rand="+Math.random,function(json){});就是原有的URL基础上加上一个随机变量,不过这个方法有风险,万一随机数一样。。。。。。
       

3、第三种方法就是自己定义一个递增变量,在URL后面加上这个递增变量,每次请求完后,就递增一下。
       

$.get()去除缓存的方法和$.getJSON()相同

 

参考博客:http://user.qzone.qq.com/935937284/blog/1329985097

目录
相关文章
|
缓存 前端开发 UED
Ajax请求如何避免缓存问题
当Ajax第一次发送请求后,会把请求的URL和返回的响应结果保存在缓存内,当下一次调用Ajax发送相同的请求时(URL完全相同,参数完全相同),浏览器就不会与服务器交互,而是直接从缓存中把数据取出来,这是为了提高页面的响应速度和用户体验,(服务端也会收到请求响应304)。
121 0
|
缓存 前端开发 JavaScript
学习AJAX必知必会(3)~自动重启工具nodemon、缓存问题、请求超时和网络异常、取消重复请求
学习AJAX必知必会(3)~自动重启工具nodemon、缓存问题、请求超时和网络异常、取消重复请求
121 0
|
缓存 前端开发 JavaScript
|
缓存 前端开发
|
缓存 前端开发 JavaScript
|
Web App开发 缓存 JavaScript
|
缓存 JavaScript 前端开发
IE浏览器下ajax缓存导致数据不更新的解决方法
摘自:http://www.iefans.net/ie-ajax-json-shuju-huancun/ 最近做设计的时候遇到一个小问题,当你用jquery的getjson函数从后台获取数据的时候,IE浏览器会自动设置缓存,如果此时你对数据进行修改的时候刷新页面,IE并不会在页面显示你修改后的数据,因为你刷新的时候IE浏览器会查找缓存并显示你修改前的数据,最后在网上查了些资料终于解决了IE浏览器下的问题。
1286 0
|
缓存 前端开发 JavaScript
Ajax解决缓存的5种方法
原文:http://www.ido321.com/129.html 1、在ajax发送请求前加上 anyAjaxObj.setRequestHeader(“If-Modified-Since”,”0″)。
672 0