所以我有一个网站上载内容的AJAX系统,它的工作原理是这样的:Microsoft Edge缓存Ajax请求?
当点击一个按钮,一个JavaScript函数被调用:
onclick="doSomething('abc')"
我的JavaScript看起来像这样:
//Ajax
var xmlhttp;
function loadXMLDoc(url,cfunc) {
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=cfunc;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
function doSomething(var) {
loadXMLDoc("http://www.website.com/ajax/doSomething.php?var="+var, function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("response-container").innerHTML=xmlhttp.responseText;
}
});
}
就称为Echo的文字有点像这样的PHP文件:
echo "Response here";
通常,我使用这种类型的系统在每次运行这个Javascript函数时在具有特定id的元素中加载新内容。
这已经完美工作了3年多,但由于某些原因,Microsoft Edge正在缓存这方面的响应。所以内容没有被正确生成。所以你只运行一次,并且在x时间内它将继续返回相同的缓存响应。
任何想法是什么正确的修复这是什么?我已经看到使用标题的提及,但我不确定如何在这种情况下应用修补程序。
你试过添加时间戳的查询字符串参数?我用它来强制CSS文件不被缓存。即''var =“+ var +”&ts =“+ Date.now()' – Quantastical
缓存ajax请求是一个常见问题,浏览器往往会越来越积极地缓存,带有时间戳值的附加请求参数是一个常用的解决方法 –