Java jquery ajax调用时浏览器上显示的缓存数据
我有以下用jquery编写的ajax调用: 它以json格式从控制器获取连续响应,并通过设置值(在下面的代码中没有)将其显示在屏幕上 我每半秒钟就从控制器得到一次数据。 但有时它会在几秒钟内显示以前的状态数据。 我跟踪了cache:false,在ajax调用中,增加和减少了间隔时间,但仍然存在问题。Java jquery ajax调用时浏览器上显示的缓存数据,java,jquery,ajax,Java,Jquery,Ajax,我有以下用jquery编写的ajax调用: 它以json格式从控制器获取连续响应,并通过设置值(在下面的代码中没有)将其显示在屏幕上 我每半秒钟就从控制器得到一次数据。 但有时它会在几秒钟内显示以前的状态数据。 我跟踪了cache:false,在ajax调用中,增加和减少了间隔时间,但仍然存在问题。 有什么建议吗?呈现旧数据的原因:浏览器努力让您的web体验更轻松、更快。为此,它们甚至缓存请求的响应,以便再次调用ame页面。他们将其显示为本地副本,而不是再次转到服务器。但有时这会成为一个问题。
有什么建议吗?呈现旧数据的原因:
浏览器努力让您的web体验更轻松、更快。为此,它们甚至缓存请求的响应,以便再次调用ame页面。他们将其显示为本地副本,而不是再次转到服务器。但有时这会成为一个问题。
解决方案: 尝试在url的末尾附加一个唯一的请求参数。 因此,如果您要访问url
(http://something.com/data),
尝试将其更改为
http://something.com/data?someUniqueThing
独特之处:在发送请求之前生成一个随机数,并将其附加到url。
因此,您的ajax调用将变成:
$(function() {
$(".master_status").hide();
setInterval(
function() {
$.ajax({
type : "Get",
url : "getDeviceInfo.htm?someUniqueThing",
success : function(response) {
if(response != null){
}
} ,
error : function(e) {
}
});
}, 500);
}
它不会让浏览器缓存您的请求。
为什么?
因为每一秒的请求最后都会有一个唯一的ID。浏览器将其视为一个新请求,但在服务器端,它不会产生任何副作用。这是IE中众所周知的问题。由于您使用的是
jquery
,所以您可以在$调用中使用cache属性。更多信息,请参阅jquery。我是为Firefox而不是为IE这样做的。您是否尝试过缓存属性?Aman arora:我尝试过您的方法,但仍然存在问题。$(function(){$(.master_status”).hide();setInterval(function(){$.ajax({type:“Get”,url:“getDeviceInfo.htm?”+random(),成功:函数(响应){if(响应!=null){}},错误:函数(e){}};},500);}@Swapnillwalivkar它工作得很好。我为它创建了一个原型。你能告诉我getDeviceInfo.htm中有什么吗?我的意思是,getDeviceInfo.htm发生了什么变化?阿曼:我解决了,问题不在于缓存数据。它在控制器端。谢谢你的回复
$(function() {
$(".master_status").hide();
setInterval(
function() {
$.ajax({
type : "Get",
url : "getDeviceInfo.htm?someUniqueThing",
success : function(response) {
if(response != null){
}
} ,
error : function(e) {
}
});
}, 500);
}