您的位置:首页 >防止 AJAX 请求缓存导致内容更新失败的几种方法:添加随机参数 在请求 URL 中添加一个随机数或时间戳,确保每次请求都是唯一的。例如:var url = "
发布于2026-04-18 阅读(0)
扫一扫,手机访问

本文介绍在使用 jQuery .load() 实现定时刷新 DOM 时,如何通过添加时间戳缓存参数(cache buster)强制绕过浏览器缓存,确保每次请求都能获取服务端最新生成的内容(如 Flask 动态生成的 PHP/HTML 片段)。
本文介绍在使用 jQuery `.load()` 实现定时刷新 DOM 时,如何通过添加时间戳缓存参数(cache buster)强制绕过浏览器缓存,确保每次请求都能获取服务端最新生成的内容(如 Flask 动态生成的 PHP/HTML 片段)。
在构建实时仪表盘(dashboard)时,常见做法是通过 JavaScript 定时发起 AJAX 请求,动态加载并替换页面中某一部分内容。然而,许多开发者会遇到这样一个典型问题:首次加载正常,但后续服务端文件(如 new-content.php)已更新,前端却始终显示旧内容——这并非后端未生效,而是浏览器主动缓存了 AJAX GET 请求的响应结果。
jQuery 的 .load() 方法底层使用的是 GET 请求,而现代浏览器对相同 URL 的 GET 请求默认启用强缓存策略(尤其当响应头未显式禁用缓存时)。即使服务端(如 Flask)已生成新内容,浏览器仍可能直接返回本地缓存副本,导致 DOM 无法反映真实更新。
解决方法是在请求 URL 后附加唯一、变化的查询参数,即“缓存粉碎器”(Cache Buster)。最常用且可靠的方式是使用当前时间戳:
function updateMain() {
setTimeout(function() {
console.log("updating");
const cacheBuster = new Date().getTime(); // 每次生成唯一毫秒级时间戳
$('#main').load('new-content.php?cb=' + cacheBuster + ' #main', function() {
updateMain(); // 递归调用,继续下一轮
});
}, 3000);
}
updateMain();✅ 关键说明:
function updateMain() {
setTimeout(function() {
$.ajax({
url: 'new-content.php',
type: 'GET',
cache: false, // ✅ jQuery 自动处理缓存问题
success: function(data) {
$('#main').html($(data).find('#main').html());
},
complete: updateMain // 无论成功失败,均继续下一轮(避免异常中断)
});
}, 3000);
}
updateMain();⚠️ 注意事项:
通过缓存参数或 cache: false 配置,即可确保每次 AJAX 请求都真实触达服务端,让仪表盘真正“活”起来。
上一篇:《三角洲行动》枪械改装代码大全
下一篇:12306官网入口及订票指南
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9