Middle
49
questionbank

Как браузер определяет, какие ресурсы нужно кэшировать?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Браузер опирается на HTTP-заголовки ответа сервера:

  • Cache-Control: Определяет общие правила кэширования. Например, max-age=<секунды> указывает время жизни ресурса в кэше, no-cache требует валидации с сервером перед использованием, а no-store запрещает кэширование.

    http
  • Expires: Устаревший заголовок, указывает точную дату и время окончания срока действия кэша. Более низкий приоритет, чем Cache-Control.

    http
  • ETag (Entity Tag): Уникальный идентификатор версии ресурса. Браузер отправляет его серверу в заголовке If-None-Match при повторном запросе. Если ETag совпадает, сервер возвращает 304 Not Modified.

    http
  • Last-Modified: Дата и время последнего изменения ресурса. Браузер отправляет его серверу в заголовке If-Modified-Since. Если ресурс не был изменен с указанной даты, сервер возвращает 304.

    http

Браузер также учитывает свой внутренний кэш, его размер и политики очистки. Если ресурс уже есть в кэше и не просрочен согласно HTTP-заголовкам, он используется без повторного запроса к серверу. В противном случае, или если требуется валидация (например, при Cache-Control: no-cache или наличии ETag/Last-Modified), браузер делает запрос к серверу.