Sobes.tech
Middle
116
questionbank

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

Ответ от нейросети

sobes.tech AI

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

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

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

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

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

    Last-Modified: Mon, 31 Dec 2023 10:00:00 GMT
    

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