AJAX在Internet Explorer 11中-不要缓存

3

我在IE 11中遇到了AJAX的问题。我的页面通过以下代码使用AJAX从服务器请求一些值:

var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp = new XMLHttpRequest();
}
else
{// code for IE6, IE5
  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function ()
{
  if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
  {
    doSomeThing();
  }
}
xmlhttp.open("GET", "theURL", true);
xmlhttp.send();

在Chrome和Firefox中,一切正常,但IE似乎缓存了AJAX响应,即使服务器上的页面发生了变化,我仍然得到相同的结果。有没有办法禁用缓存?

在你的 AJAX 请求/响应 URL 上附加一个随机数。 - Keith A
或者你可以修复你的服务器,让它不再告诉客户端进行缓存。 - John Dvorak
1
另外,不要使用w3schools作为资源。否则我们将一直支持IE5(而且,支持IE5绝不是他们最糟糕的罪行)。 - John Dvorak
2个回答

6
在URL中添加一个随机参数,例如时间戳:
var url="//yoururl.com/";
url+="?"+new Date().getTime();

1
这让我很疯狂。我尝试了许多缓存清除技术和设置缓存标头。其中许多要么不起作用,要么是徒劳无功的。我发现唯一可行的解决方案是设置:

标头Pragma:no-cache

我希望它能帮助其他遇到IE头痛的人。

顺便说一下,这个StackOverflow线程很好地阐明了Pragma和Cache-control之间的区别: Pragma和Cache-control标头之间的区别?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接