Чому атрибут Cache-Control надсилається в заголовок запиту (клієнт на сервер)?


163

Прочитавши про Cache-Controlполе заголовка HTTP,

Я розумію , що Cache-Controlполе в заголовку відповіді HTTP (сервер до клієнта) визначає директиви для проміжних проксі - сервер / клієнтського браузера про те , як обробляти відповідь, відправивши різні значення для Cache-Controlполя: private, public, no-cache, або no-storeв заголовку відповіді.

Але я не розумію, чому нам потрібно надсилати Cache-Controlатрибут у заголовку запиту (клієнт на сервер)?

Відповіді:


137

Cache-Control: no-cacheзазвичай використовується в заголовку запиту (надсилається з веб-браузера на сервер) для примусової перевірки ресурсу в проміжних проксі. Якщо клієнт не надсилає цей запит на сервер, проміжні проксі-сервери повернуть копію вмісту, якщо він свіжий (не закінчився термін дії відповідно до Expireчи max-ageполя). Cache-Controlнаправляє ці проксі-сервери на повторну перевірку копії, навіть якщо вона свіжа.


8
Можливо, тут буде занадто пізно, але хіба що для інших видів використання? Чи використовується поле максимального віку для будь-яких цілей?
Сем

Чому сучасні браузери прагнуть це робити? Вони не довіряють проміжним проксі, хоча вони ведуть себе відповідно до веб-стандартів ??
rogerdpack

1
@rogerdpack ні, тому що вони їм довіряють, тому вони надсилають заголовок, якому вони довіряють, буде чесно вказати, що у них є особливі причини вимагати більшої свіжості, ніж потребує більшість потреб.
Джон Ханна

1
@rogerdpack, якщо ви тільки що щось зробили, ви знаєте, що змінили стан і хочете це відобразити, це було б класичним випадком.
Джон Ханна

8
@JonHanna Можливо, ви перевірили "відключити кеш" у інструментах для розробників Chrome? : D
Григорій Магаршак

15

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


4

На додаток до вищевказаної відповіді,
можливо, буде встановлено, де реалізовано кешування ланцюжка кеш-пам'яті. У такому випадку, якщо запит надходить до першого кешу, де він не задоволений, він може перейти до подальшого ланцюгового кешу.

Таким чином, щоб отримувати відповідь завжди від сервера, ми включаємо кеш-контроль у заголовки запитів. Це забезпечить відповідь завжди від сервера.


Ви говорите: "Таким чином, щоб отримувати відповідь завжди від сервера, ми включаємо кеш-контроль у заголовки запиту. Це забезпечить відповідь завжди від сервера." Яке значення цього заголовка могло б досягти цього?
Дон Хетч

Cache-Control: no-cacheскаже проксі, щоб забезпечити перевірку відповіді до кінця.
mogsie
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.