Предотвращение кэширования вызовов AJAX в библиотеке закрытия Google

Я не могу найти способ отключить кеш браузера (а иногда и сервера «304») в вызовах GCL AJAX, как я сделал в jQuery.

$.ajax({
  url: "test.html",
  cache: false,
});

Может быть, я могу как-то контролировать заголовки?

Мне не нравятся такие ответы, как добавление случайной строки в параметр GET вручную. Нравится:

requestObject.send("/feed/get?id=" + id + '&nocache=' + new Date().getTime());

person Dan    schedule 01.12.2011    source источник


Ответы (2)


Параметр Cache в $.ajax помещает отметку времени в параметр GET .

Однако вы можете поместить Cache-Control: no-cache в заголовки запроса при вызове send().

person Seyeong Jeong    schedule 01.12.2011
comment
Не могли бы вы добавить пример кода? Я действительно не могу найти, как добавить cache-control - person Dan; 02.12.2011
comment
Попробуйте: goog.net.XhrIo.send(url, opt_callback, opt_method, opt_content, {'Cache-Control': 'no-cache'}, opt_timeoutInterval) - person Seyeong Jeong; 02.12.2011
comment
Спасибо за этот пример кода! (PS: как хорошо выглядит код jQuery по сравнению с GCL) - person Dan; 02.12.2011
comment
Этот вопрос поможет немного прояснить необязательные параметры: stackoverflow.com/questions/8356227/ - person Dan; 02.12.2011

Предполагая, что вы используете xhrio для выполнения ajax, другой способ сделать это — установить заголовок после создания экземпляра xhrio.

var requestObject = new goog.net.XhrIo();
requestObject.headers.set('Cache-Control', 'no-cache');
goog.events.listen(requestObject, goog.net.EventType.COMPLETE, function(e) {
    var obj = this.getResponseJson();
}); 
requestObject.send('http://example.com/jsoncontentsource'); 
person Cheeso    schedule 09.03.2012
comment
К сожалению, это не работает для меня. Даже при настройке заголовков IE9, кажется, кэширует запрос. Кажется, работает только QueryString :( - person monzonj; 14.01.2013