/ / jQuery XmlHttpRequest Cache-Control ігнорується - javascript, google-chrome, jquery

jQuery XmlHttpRequest Cache-Control ігнорується - javascript, google-chrome, jquery

Я використовую Google Chrome, і я помітив, що кожен раз, коли я роблю запит XHR, я отримую наступні заголовки на запит

Cache-Control: no-cache
Pragma: no-cache

Якщо ви прочитали специфікацію на http://www.w3.org/TR/XMLHttpRequest/ у ній написано наступне

Якщо агент користувача реалізує кеш HTTPслід поважати Заголовки кеш-керування в заголовках запитів автора (наприклад, керування кешем: no-cache обходить кеш). Він не повинен надсилати Cache-Control або Pragma автоматично запитувати заголовки, якщо кінцевий користувач прямо не запитує така поведінка (наприклад, перезавантаження сторінки).

Ну, я намагаюся зробити таке:

$.ajax(myUrl, {
type: "get",
dataType: "json"
cache: true,
headers: {
"Cache-Control": "max-age=200"
}
})

Як ви можете бачити, я явно встановлюю заголовок Cache-Control, сподіваючись отримати кешовану копію свого ресурсу.

Чи можна не відправляти Cache-Control: no-cache заголовок, коли робиться запит XHR?

Відповіді:

46 для відповіді № 1

Це була німа помилка. Інструменти для розробників були встановлені як "Disable Cache". Тому завжди додавали заголовок кеш-керування.

Рауль


3 для відповіді № 2

Я тільки що перевірив його і ваш код працює відмінно, за винятком відсутньої коми.

Відкрийте вкладку "Мережа", а потім спробуйте це на консолі на цій сторінці:

$.ajax("http://stackoverflow.com/", {
type: "get",
dataType: "json",
cache: true,
headers: {
"Cache-Control": "max-age=123"
}
})

Знову перейдіть на вкладку Мережа, клацніть на запит, який ви щойно зробили, і натисніть вкладку "заголовки". Ви побачите, що запит надіслано з Cache-Control заголовок, який ви надали.