如何防止Ajax缓存

Vit*_*.us 3 javascript ajax internet-explorer caching windows-desktop-gadgets

我创建了这个类来从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);
Run Code Online (Sandbox Code Playgroud)

yod*_*oda 5

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

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

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