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, который вы указали.