gpt4 book ai didi

java - jquery ajax 调用时在浏览器上显示的缓存数据

转载 作者:行者123 更新时间:2023-12-01 13:48:57 25 4
gpt4 key购买 nike

我有以下用 jquery 编写的 ajax 调用: 它以 json 格式从 Controller 获取连续响应,并通过设置值将其显示在屏幕上(以下代码中不存在)。

$(function() {
$(".master_status").hide();
setInterval(
function() {
$.ajax({
type : "Get",
url : "getDeviceInfo.htm",
success : function(response) {
if(response != null){

}
} ,
error : function(e) {
}
});
}, 500);

}

我每半秒就会从 Controller 获取数据。但有时它会显示之前的状态数据几分之一秒。我在ajax调用中尝试了cache:false并增加和减少间隔时间,但问题仍然存在。有什么建议吗?

最佳答案

呈现旧数据的原因:

浏览器努力让您的网络体验变得更轻松、更快。为此,它们甚至缓存请求的响应,以便您再次调用同一页面。他们向其显示本地副本,而不是再次访问服务器。但有时这会成为一个问题。

解决方案:尝试在 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);

}

它不会让浏览器缓存您的请求。为什么 ?因为每个第二个请求末尾都会有一个 uniqueId。浏览器将其视为一个新请求,但在服务器端,它不会造成任何副作用。

关于java - jquery ajax 调用时在浏览器上显示的缓存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20123163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com