Я використовую 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
заголовок, який ви надали.