2016-04-05 3 views
2

Так у меня есть система 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 кэширует ответ от этого. Таким образом, контент не генерируется правильно. Итак, вы запускаете это один раз, и за какое-то время он просто будет возвращать тот же кешированный ответ.

Любые идеи, какое правильное решение для этого? Я видел упоминание использования заголовков, но я не уверен, как применить исправление в этой ситуации.

+2

Вы пытались добавить метку времени параметров строки запроса? Я использовал это, чтобы заставить файлы CSS не кэшироваться. то есть '? var =" + var + "& ts =" + Date.now() ' – Quantastical

+0

Кэширование ajax-запросов является общей проблемой, и браузеры, как правило, кэшируются все более агрессивно. Дополнительный параметр запроса, который несет значение временной метки, является общим обходным решением –

ответ

7

У нас были проблемы с кэшированными запросами ajax на Edge и IE 10/11. Нашим решением было использование HTTP-headerCache-Control: no-cache Это работает без отметки времени.

2

Да, в XMLHttpRequest нет ничего, что означало бы его кеширование. Браузеры обрабатывают их так же, как и другие HTTP-запросы. Вы можете полностью контролировать, как браузер кэширует ваш контент с помощью HTTP-заголовков.

1

Лучший способ отключить кэш в IE или MS Пограничный делать это:

Просто нажмите f12, затем перейдите на вкладку сети и найти поступательный в окне инструментов с этим заголовком: Всегда обновляйте сервер.

Он будет посылать запрос каждый раз, без кэша .. enter image description here

+0

Этот ответ не очень полезен для этого контекста. Они спрашивают, как сделать эту работу для всех пользователей своего веб-приложения. Обычно не представляется возможным, чтобы каждый пользователь вносил изменения в свои настройки браузера. – Keith

Смежные вопросы