Так у меня есть система Ajax для загрузки содержимого на веб-сайте, это работает так:Кэширование Microsoft Edge Ajax?
При нажатии на кнопку, функция Javascript называется:
onclick="doSomething('abc')"
My 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 "Response here";
В общем, я использую этот тип системы для загрузки нового контента в элемент с определенным идентификатором каждый раз, когда запускается эта функция Javascript.
Это работает отлично уже более 3 лет, но по какой-то причине Microsoft Edge кэширует ответ от этого. Таким образом, контент не генерируется правильно. Итак, вы запускаете это один раз, и за какое-то время он просто будет возвращать тот же кешированный ответ.
Любые идеи, какое правильное решение для этого? Я видел упоминание использования заголовков, но я не уверен, как применить исправление в этой ситуации.
Вы пытались добавить метку времени параметров строки запроса? Я использовал это, чтобы заставить файлы CSS не кэшироваться. то есть '? var =" + var + "& ts =" + Date.now() ' – Quantastical
Кэширование ajax-запросов является общей проблемой, и браузеры, как правило, кэшируются все более агрессивно. Дополнительный параметр запроса, который несет значение временной метки, является общим обходным решением –