← Назад ко всем вопросам

Какие HTTP-заголовки управляют кэшированием?

1️⃣ Как кратко ответить

HTTP-заголовки, управляющие кэшированием, включают Cache-Control, Expires, ETag, Last-Modified и Pragma. Cache-Control определяет правила кэширования, Expires указывает дату истечения срока действия, ETag и Last-Modified помогают валидации кэша, а Pragma используется для обратной совместимости.

2️⃣ Подробное объяснение темы

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

Cache-Control

Cache-Control — основной заголовок для управления кэшированием. Он предоставляет множество директив, которые определяют, как кэшировать ресурс. Примеры директив:

  • max-age=<seconds>: Указывает максимальное время в секундах, в течение которого ресурс считается актуальным.
  • no-cache: Требует проверки актуальности ресурса на сервере перед использованием кэша.
  • no-store: Запрещает кэширование ресурса.
  • public: Разрешает кэширование ресурса любым кэшем, включая промежуточные прокси.
  • private: Разрешает кэширование только конечным клиентом, но не промежуточными прокси.

Пример использования:

Cache-Control: max-age=3600, public

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

Expires

Expires указывает точную дату и время, когда ресурс считается устаревшим. Этот заголовок используется для указания абсолютного времени истечения срока действия ресурса.

Пример:

Expires: Wed, 21 Oct 2023 07:28:00 GMT

Если Cache-Control и Expires указаны одновременно, Cache-Control имеет приоритет.

ETag

ETag используется для проверки актуальности ресурса. Это уникальный идентификатор версии ресурса. При последующих запросах клиент может отправить ETag в заголовке If-None-Match, чтобы проверить, изменилась ли версия ресурса.

Пример:

ETag: "abc123"

Если ресурс не изменился, сервер может ответить статусом 304 Not Modified, что позволяет избежать повторной передачи данных.

Last-Modified

Last-Modified указывает дату и время последнего изменения ресурса. Клиент может использовать этот заголовок в запросе If-Modified-Since, чтобы проверить, изменился ли ресурс с указанного времени.

Пример:

Last-Modified: Wed, 21 Oct 2023 07:28:00 GMT

Pragma

Pragma — устаревший заголовок, используемый для обратной совместимости с HTTP/1.0. Наиболее часто используется директива no-cache, которая аналогична Cache-Control: no-cache.

Пример:

Pragma: no-cache

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

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

Тема: Web основы и браузер
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки