Как предотвратить Ajax-кеширование - PullRequest
3 голосов
/ 30 октября 2011

Я создал этот класс для извлечения файла из Интернета и проверки новой версии с использованием Ajax.Этот код запускается на гаджете Windows, на IE8.Но у меня проблемы из-за кеша.Есть ли способ исправить этот класс 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);

1 Ответ

5 голосов
/ 30 октября 2011

Вы можете передать текущую метку времени как переменную в URL, например:

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

Кроме того, вы можете принудительно перезагружать страницу на стороне сервера, используя соответствующие заголовки

...