Javascript jQuery.get不';无法在服务器上接收文件的最新版本

Javascript jQuery.get不';无法在服务器上接收文件的最新版本,javascript,apache,jquery,Javascript,Apache,Jquery,可能重复: 我正在使用jQuery读取web服务器上的一个小文本文件: jQuery.get('scores.txt', function(data) { parseScores(data); }); 这几乎可以正常工作,但无法可靠地加载文件的最新版本。即使story.txt已更改,刷新页面也会为数据返回完全相同的值 服务器是标准的Mac OS Apache,没有启用缓存,它与客户端是同一台机器——因此理论上,在我和它之间没有其他缓存 如果我加载http://127.0.0.1/sc

可能重复:

我正在使用jQuery读取web服务器上的一个小文本文件:

jQuery.get('scores.txt', function(data) {
    parseScores(data);
});
这几乎可以正常工作,但无法可靠地加载文件的最新版本。即使
story.txt
已更改,刷新页面也会为
数据返回完全相同的值

服务器是标准的Mac OS Apache,没有启用缓存,它与客户端是同一台机器——因此理论上,在我和它之间没有其他缓存

如果我加载
http://127.0.0.1/scores.txt
进入浏览器,它将始终打开最新版本

查看Apache日志,当页面无法更新时,jQuery GET请求从未到达服务器

我怀疑我可能需要将这个问题转移到serverfault.com,但是有人能看到我的JavaScript有问题,导致它以这种方式运行吗

有没有办法使用JavaScript/jQuery强制浏览器请求文件的新副本

提前感谢。

向文件名添加cachebuster(例如时间戳),如下所示

jQuery.get('scores.txt?' + (+new Date()), function(data) {
   parseScores(data);
})

您可以向每个请求添加唯一标识符,以停止浏览器缓存响应。仅仅因为客户端与web服务器位于同一设备上,这并不会停止浏览器缓存响应(也不会阻止某些代理服务器参与到正确的环境中)

尝试将以下选项添加到AJAX中:

jQuery.ajax({
    url: 'scores.txt',
    dataType: 'text',
    type: 'GET',
    cache: false,
    success: parseScores
});
jQuery将自动为每个请求添加一个缓存阻止时间戳。

使用缓存清除器

JQuery的Ajax方法有一个缓存设置来为您实现这一点:


@如果您不想在单个页面上缓存任何服务器内容,Peter J的解决方案是最干净的:

server?也许客户端(浏览器)有一个缓存级别…你使用什么类型的浏览器?Mountain Lion Safari,但我发现在虚拟机上使用Internet Explorer时也发生了同样的情况。我首选的方法是+1:)这非常有效。非常感谢。五分钟后我可以单击“接受”…如果您想继续使用
$.get()
,也可以使用
$.ajaxSetup({cache:false})在脚本的顶部,将该选项应用于在此之后进行的所有AJAX调用。谢谢@Matt。我还没有喝早茶:-)也谢谢你。非常感谢,谢谢。我接受了上面的答案,因为这似乎是实现相同结果的最优雅的方式——但我可以看出,这同样有效。非常感谢。
jQuery.ajax({
    url: 'scores.txt',
    dataType: 'text',
    type: 'GET',
    cache: false,
    success: parseScores
});