У меня классическая проблема IE-caches-all-in-Ajax. У меня есть немного данных, которые обновляются каждую минуту.
Изучив форумы, решения сводятся к этим вариантам (http://stackoverflow.com/questions/5997857/grails-best-way-to-send-cache-headers-with-every-ajax-call):
- добавить токен для очистки кэша в строку запроса (например,? Time = [timestamp])
- отправляет заголовок ответа HTTP, который специально запрещает IE кэшировать запрос
- использовать ajax POST вместо GET
К сожалению, очевидная настройка запроса или «cache: false» не будет работать для меня, поскольку обновленный файл данных размещен в Akamai Netstorage и не может принимать строки запросов. Я тоже не хочу использовать POST.
Что я хочу сделать, так это попробовать отправить заголовок ответа HTTP, который специально запрещает IE кэшировать запрос или, если кто-то еще знает другое решение для очистки кэша ??
Кто-нибудь знает, как это можно сделать? Любая помощь будет высоко ценится.
Вот мой код:
(function ($) {
var timer = 0;
var Browser = {
Version: function () {
var version = 999;
if (navigator.appVersion.indexOf("MSIE") != -1) version = parseFloat(navigator.appVersion.split("MSIE")[1]);
return version;
}
}
$.fn.serviceboard = function (options) {
var settings = { "refresh": 60};
return this.each(function () {
if (options) $.extend(settings, options);
var obj = $(this);
GetLatesData(obj, settings.refresh);
if (settings.refresh > 9 && Browser.Version() > 6) {
timer = setInterval(function () { GetLatestData(obj, settings.refresh) }, settings.refresh * 1000);
}
});
};
function GetLatestData(obj, refresh) {
var _url = "/path/updated-data.htm";
$.ajax({
url: _url,
dataType: "html",
complete: function () {},
success: function (data) {
obj.empty().append(data);
}
}
});
}
})(jQuery);