【问题标题】:How to prevent Ajax caching如何防止 Ajax 缓存
【发布时间】:2011-12-18 01:55:30
【问题描述】:

我创建了这个类来从 Web 获取文件以使用 Ajax 检查新版本。 此代码在 IE8 上的 Windows 小工具上运行。但是由于缓存,我遇到了麻烦。 有没有办法修复这个 Ajax 类以禁用缓存?

PS:我不使用任何库或框架。

var ClassAjax = function() {

    this.data = null;

    var that = this;

    this.get = function(url, send) {

        var ajax = new function ObjAjax() {
            try{ return new XMLHttpRequest(); }
            catch(e){try{ return new ActiveXObject("Msxml2.XMLHTTP"); }
            catch(e){ return new ActiveXObject("Microsoft.XMLHTTP"); }}
            return null;
        }

        ajax.onreadystatechange = function() {
            if(ajax.readyState == 1) { that.onLoading(); }
            if(ajax.readyState == 4) { that.data=ajax.responseText; that.onCompleted(that.data); }  
        }
        ajax.open("GET", url, true);
        ajax.send(send);

    };

    this.onLoading = function() {
        //function called when connection was opened
    };

    this.onCompleted = function(data) {
        //function called when download was completed
    };
}

var request = new ClassAjax();
request.onCompleted = function(data) { alert(data); }
request.get('http://exemple.com/lastversion.html', null);

【问题讨论】:

    标签: javascript ajax internet-explorer caching windows-desktop-gadgets


    【解决方案1】:

    您可以将当前时间戳作为变量传递到 url,如下所示:

    var timestamp = new Date().getTime();
    ajax.open("GET", url+'?ts='+timestamp, true);
    

    此外,您可以使用正确的标头强制在服务器端重新加载页面

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多