【发布时间】:2012-01-24 14:05:05
【问题描述】:
我遇到了经典的 IE-caches-everything-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
不幸的是,明显的查询字符串或“缓存:假”设置对我不起作用,因为更新的数据文件托管在 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);
【问题讨论】:
标签: ajax internet-explorer caching http-headers browser-cache