HTTP - Кэширование

HTTP обычно используется для распределенных информационных систем, где производительность может быть улучшена за счет использования кэшей ответов. Протокол HTTP / 1.1 включает в себя ряд элементов, предназначенных для обеспечения работы кэширования.

Целью кэширования в HTTP / 1.1 является устранение необходимости отправлять запросы во многих случаях и устранение необходимости отправлять полные ответы во многих других случаях.

Основные механизмы кэширования в HTTP / 1.1 - это неявные директивы для кэшей, где сервер указывает время истечения и валидаторы. Для этого мы используем заголовок Cache-Control .

Заголовок Cache-Control позволяет клиенту или серверу передавать различные директивы в запросах или ответах. Эти директивы обычно переопределяют алгоритмы кэширования по умолчанию. Директивы кэширования указываются в списке через запятую. Например:

Cache-control: no-cache

Следующие директивы запроса кеша могут использоваться клиентом в его HTTP-запросе:

SN Директива и описание запроса кэша
1 нет кэша

Кэш не должен использовать ответ для удовлетворения последующего запроса без успешной повторной проверки на исходном сервере.

2 нет-магазин

Кэш не должен хранить ничего о запросе клиента или ответе сервера.

3 максимальный возраст = секунды

Указывает, что клиент готов принять ответ, возраст которого не превышает указанное время в секундах.

4 max-stale [= секунд]

Указывает, что клиент готов принять ответ, срок действия которого истек. Если даны секунды, срок их действия не должен превышать этого времени.

5 min-fresh = секунды

Указывает, что клиент готов принять ответ, время свежести которого не меньше его текущего возраста плюс указанное время в секундах.

6 нет-преобразования

Не конвертирует сущность-тело.

7 только-если-кэшируются

Не извлекает новые данные. Кеш может отправлять документ, только если он находится в кеше, и не должен связываться с origin-сервером, чтобы узнать, существует ли более новая копия.

Следующие директивы ответа кеша могут использоваться сервером в его HTTP-ответе:

SN Директива и описание ответа кэша
1 общественности

Указывает, что ответ может быть кэширован любым кешем.

2 частный

Указывает, что все или часть ответного сообщения предназначены для одного пользователя и не должны кэшироваться общим кэшем.

3 нет кэша

Кэш не должен использовать ответ для удовлетворения последующего запроса без успешной повторной проверки на исходном сервере.

4 нет-магазин

Кэш не должен хранить ничего о запросе клиента или ответе сервера.

5 нет-преобразования

Не конвертирует сущность-тело.

6 обязательно перепроверить

Кэш должен проверять состояние устаревших документов перед его использованием, а просроченные не должны использоваться.

7 прокси-REVALIDATE

Директива proxy-revalidate имеет то же значение, что и директива must-revalidate, за исключением того, что она не применяется к кэшам пользовательских агентов, которые не используются совместно.

8 максимальный возраст = секунды

Указывает, что клиент готов принять ответ, возраст которого не превышает указанное время в секундах.

9 s-maxage = секунды

Максимальный возраст, указанный в этой директиве, переопределяет максимальный возраст, указанный в директиве max-age или в заголовке Expires. Директива s-maxage всегда игнорируется частным кешем.