You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XMLHttpRequest获取数据不更新,疑似浏览器缓存问题求助

解决浏览器缓存导致无法获取最新DATA_BASE.txt内容的问题

你的判断完全正确,这是浏览器对静态资源(比如txt文件)的缓存机制导致的。以下是几种原生JavaScript的解决方法,确保每次请求都能拿到服务器上的最新文件:

方法1:添加随机时间戳作为URL查询参数

这是最简单直接的方案,通过给请求URL附加一个唯一的时间戳参数,让浏览器认为每次都是新请求,不会复用缓存:

function fRetrieve_Data_From_Server(sFile, fFunction){
    let httpRequest = new XMLHttpRequest;
    // 拼接时间戳参数,确保每次请求URL唯一
    const cacheBustedUrl = `${sFile}?t=${Date.now()}`;
    httpRequest.open("GET", cacheBustedUrl);
    httpRequest.onload = fFunction;
    httpRequest.send();
}

Date.now()会生成当前时间的毫秒数,每次请求的参数都不同,浏览器会直接向服务器发起新请求,不会使用本地缓存。

方法2:通过请求头禁用缓存

通过设置HTTP请求头,明确告诉浏览器不要使用缓存,必须从服务器获取最新内容:

function fRetrieve_Data_From_Server(sFile, fFunction){
    let httpRequest = new XMLHttpRequest;
    httpRequest.open("GET", sFile);
    // 设置禁用缓存的请求头
    httpRequest.setRequestHeader('Cache-Control', 'no-cache, no-store, must-revalidate');
    httpRequest.setRequestHeader('Pragma', 'no-cache');
    httpRequest.setRequestHeader('Expires', '0');
    httpRequest.onload = fFunction;
    httpRequest.send();
}

这些头信息会强制浏览器绕过本地缓存,直接与服务器验证或获取最新资源。

可选:服务器端配置缓存策略(若有权限)

如果你能修改服务器配置,可以给DATA_BASE.txt设置响应头,比如:

  • Cache-Control: no-cache:浏览器每次都会验证缓存是否新鲜
  • Cache-Control: max-age=0:缓存立即过期

这种方式不需要修改前端代码,是更规范的长期解决方案,但需要服务器配置权限。

内容的提问来源于stack exchange,提问作者Rbon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 16:07:28