Вебсправочник
Основы веб-разработки

HTTP-кеш: хранение и проверка актуальности

Разбираем Cache-Control, валидаторы и обновление версионированных ресурсов.

Зачем это нужно

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

Отделяйте свежесть от хранения

Max-age задаёт срок свежести. No-cache не обязательно запрещает хранить ответ: обычно оно требует проверки перед повторным использованием. No-store предназначено для запрета хранения ответа кешами.

Используйте валидаторы

ETag и Last-Modified помогают проверить изменение ресурса. При подтверждении актуальности сервер может вернуть 304 без полного тела. Это не ошибка, если браузер уже имеет подходящую копию.

Обновляйте адрес при долгом хранении

Файлы с хешем в имени удобно хранить долго: новый код получает новый URL. Если файл заменён по тому же адресу, слишком долгий срок может оставить пользователей на старой версии.

Если между сервером и посетителем работает CDN, правила обновления нужно проверить и на этом уровне. При сравнении сервисов доставки контента уточняйте настройку TTL, ключа кеша и очистку отдельных URL. Подключение CDN не отменяет запрет общего кеширования персональных ответов.

Важное ограничение

Не кешируйте персональные ответы как общедоступные. Учёт cookie, авторизации и Cache-Control особенно важен для серверного кеша между пользователями.

Контрольная проверка

  • HTML и ресурсы имеют осознанные разные правила.
  • Новая версия CSS получает новый адрес или версию.
  • Авторизованные ответы не попадают в общий кеш.
  • Проверены холодная и повторная загрузки.

Продолжить изучение: проверка ответа сервера, Network.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.