HTTP - кеширование
HTTP обычно используется для распределенных информационных систем, где производительность может быть улучшена за счет использования кэшей ответов. Протокол HTTP / 1.1 включает ряд элементов, предназначенных для работы кеширования.
Целью кэширования в HTTP / 1.1 является устранение необходимости отправлять запросы во многих случаях и устранение необходимости отправлять полные ответы во многих других случаях.
Основные механизмы кеширования в HTTP / 1.1 - это неявные директивы для кешей, где сервер определяет время истечения срока действия и валидаторы. Мы используемCache-Control заголовок для этой цели.
В Cache-ControlЗаголовок позволяет клиенту или серверу передавать различные директивы в запросах или ответах. Эти директивы обычно переопределяют алгоритмы кэширования по умолчанию. Директивы кэширования указываются в списке, разделенном запятыми. Например:
Cache-control: no-cache
Следующие директивы запроса кеша могут использоваться клиентом в своем HTTP-запросе:
SN | Директива и описание запроса кэша |
---|---|
1 | no-cache Кэш не должен использовать ответ для удовлетворения последующего запроса без успешной повторной проверки на исходном сервере. |
2 | no-store В кеше не должно храниться ничего о запросе клиента или ответе сервера. |
3 | max-age = seconds Указывает, что клиент готов принять ответ, возраст которого не превышает заданное время в секундах. |
4 | max-stale [ = seconds ] Указывает, что клиент готов принять ответ, срок действия которого истек. Если указаны секунды, срок его действия не должен истекать более чем на это время. |
5 | min-fresh = seconds Указывает, что клиент готов принять ответ, время жизни которого не меньше его текущего возраста плюс указанное время в секундах. |
6 | no-transform Не преобразует тело объекта. |
7 | only-if-cached Не извлекает новые данные. Кэш может отправить документ, только если он находится в кеше, и не должен связываться с исходным сервером, чтобы узнать, существует ли более новая копия. |
Следующие директивы ответа кеша могут использоваться сервером в его ответе HTTP:
SN | Директива и описание ответа кэша |
---|---|
1 | public Указывает, что ответ может кэшироваться любым кешем. |
2 | private Указывает, что ответное сообщение полностью или частично предназначено для одного пользователя и не должно кэшироваться в общем кэше. |
3 | no-cache Кэш не должен использовать ответ для удовлетворения последующего запроса без успешной повторной проверки на исходном сервере. |
4 | no-store В кеше не должно храниться ничего о запросе клиента или ответе сервера. |
5 | no-transform Не преобразует тело объекта. |
6 | must-revalidate Кэш должен проверять статус устаревших документов перед его использованием, и просроченные документы не должны использоваться. |
7 | proxy-revalidate Директива proxy-revalidate имеет то же значение, что и директива must-revalidate, за исключением того, что она не применяется к необщим кэшам пользовательских агентов. |
8 | max-age = seconds Указывает, что клиент готов принять ответ, возраст которого не превышает заданное время в секундах. |
9 | s-maxage = seconds Максимальный возраст, указанный в этой директиве, переопределяет максимальный возраст, указанный либо в директиве max-age, либо в заголовке Expires. Директива s-maxage всегда игнорируется частным кешем. |