如何防止jQuery Ajax缓存?

有人可以帮我这个吗? 我有一个使用.manifest进行离线存储缓存的网页。 在该页面中,我使用jQuery ajax调用从服务器获取数据。 如果我先加载页面,就可以了。 我可以在线和离线之间切换。 但问题是当我重新上线并刷新页面时。 jQuery ajax无法再与服务器通信了。 有没有办法让ajax与服务器通信或清除脱机缓存?

我的ajax电话是这样的:

$.ajax({ type: "GET", url: requestUrl, success: localSuccess, error: error, dataType: "text", cache:false }); 

我在每个页面/母版页的顶部都有这段代码

  //Disable caching in IE, becuase it's EVIL! $(document).ready(function () { $.ajaxSetup({ cache: false }); }); 

将随机字符串放入url,如“get.php?random =”+ Math.random()“可以解决这个问题。这不是最好的解决方案,但它很有效。

我知道我参加这个派对的时间非常晚,但只是把它放在那里。 我很遗憾从僵尸的土地上复活这个问题。 在safari和一些较旧的浏览器中,(从我迄今为止经历过的, cache:false有时似乎不起作用)。 对于更多跨浏览器兼容的解决方案,您可以向ajax()调用添加数据选项,并添加随机数生成器作为参数。 这将是这样的。

  var callback = function () { $.ajax({ type: "GET", url: requestUrl, success: localSuccess, error: error, dataType: "text", //won't work sometimes cache:false, //start random number generator data : { r: Math.random() } //end random number generator }); } 

这样,每次发生服务器调用时,都会生成一个新的随机数,并且由于数据与先前的请求不同,因此ajax请求不会被缓存,并且每次都会确保新的服务器调用。 在您的服务器中,您可以忽略此变量r