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 всегда игнорируется частным кешем. |