当使用AJAX而不使用缓存破坏查询字符串,但使用http响应头时,清除IE缓存

当使用AJAX而不使用缓存破坏查询字符串,但使用http响应头时,清除IE缓存,ajax,internet-explorer,caching,http-headers,browser-cache,Ajax,Internet Explorer,Caching,Http Headers,Browser Cache,我用的是经典的IE缓存Ajax问题中的所有内容。我有一些每分钟都会刷新的数据 经过对论坛的研究,解决方案归结为以下几个选项(http://stackoverflow.com/questions/5997857/grails-best-way-to-send-cache-headers-with-every-ajax-call): 向查询字符串添加一个缓存破坏令牌(比如?time=[timestamp]) 发送明确禁止IE缓存请求的HTTP响应头 使用ajax POST而不是GET 不幸的是,

我用的是经典的IE缓存Ajax问题中的所有内容。我有一些每分钟都会刷新的数据

经过对论坛的研究,解决方案归结为以下几个选项(http://stackoverflow.com/questions/5997857/grails-best-way-to-send-cache-headers-with-every-ajax-call):

  • 向查询字符串添加一个缓存破坏令牌(比如?time=[timestamp])
  • 发送明确禁止IE缓存请求的HTTP响应头
  • 使用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);

在GET请求中添加一个随机数,这样IE就不会在缓存中将其标识为“相同”。此数字可以是时间戳:

new Date().getTime()
编辑可能创建请求的url:

var _url = "/path/updated-data.htm?" + new Date().getTime()
我相信这不会导致任何错误

EDIT2很抱歉,我刚刚读了你的帖子,发现这不是你的选择

您说“托管在Akamai上,无法接受查询字符串”,但为什么不呢?
我从来没有听说过一个页面不接受额外的“?blabla”,即使它是html。

这让我抓狂。我尝试了许多缓存破坏技术和设置缓存头。因此,其中许多要么不起作用,要么是白费力气。我找到的唯一测试正常的解决方案是设置:

Header Pragma: no-cache

我希望它能让其他人省去IE的麻烦。

我应该提到的是,数据文件托管在Akamai Netstorage上,不允许查询。不幸的是,您在Akamai中传递了一个查询字符串,它从源服务器中提取,我们希望避免在源服务器上产生沉重的流量负载。