JQuery XmlHttpRequest Cache-Control игнорируется
Я использую google chrome, и я заметил, что каждый раз, когда я выполняю XHR-запрос, я получаю следующие заголовки, помещенные в запрос:
Cache-Control: no-cache
Pragma: no-cache
Если вы прочитали спецификацию в http://www.w3.org/TR/XMLHttpRequest/, она сообщит следующее
Если пользовательский агент реализует HTTP-кеш, он должен уважать Заголовки Cache-Control в заголовках запросов автора (например, Cache-Control: no-cache обходит кеш). Он не должен отправлять Cache-Control или Pragma запрашивать заголовки автоматически, если конечный пользователь явно не запрашивает такое поведение (например, перезагрузка страницы).
Ну, я пробую следующее:
$.ajax(myUrl, {
type: 'get',
dataType: 'json'
cache: true,
headers: {
'Cache-Control': 'max-age=200'
}
})
Как вы видите, я явно устанавливаю заголовок Cache-Control в надежде получить кешированную копию моего ресурса. Ну, кажется, Chrome игнорирует заголовок Cache-Control.
Возможно ли послать заголовок Cache-Control: no-cache
при выполнении запроса XHR?
Ответы
Ответ 1
Это была глупая ошибка. У меня были установлены инструменты разработчика "Отключить кеш". Именно поэтому он всегда добавлял заголовок управления кешем. Если это когда-либо случается с вами, убедитесь, что вы не уверены, что этот флажок не установлен.
Раул
Ответ 2
Я только что протестировал его, и ваш код работает нормально, за исключением отсутствующей запятой.
Откройте вкладку "Сеть", затем попробуйте в консоли на этой странице:
$.ajax('http://stackoverflow.com/', {
type: 'get',
dataType: 'json',
cache: true,
headers: {
'Cache-Control': 'max-age=123'
}
})
Еще раз проверьте вкладку сети, щелкните только что выполненный запрос и перейдите на вкладку "заголовки". Вы увидите, что запрос был отправлен с заголовком Cache-Control
, который вы указали.