HTTP-кеш: хранение и проверка актуальности
Разбираем Cache-Control, валидаторы и обновление версионированных ресурсов.
Зачем это нужно
Кеш позволяет повторно использовать ранее загруженный ответ. Это сокращает передачу данных и время ожидания, но требует правильной стратегии обновления. HTML и статические ресурсы часто нуждаются в разных сроках хранения.
Отделяйте свежесть от хранения
Max-age задаёт срок свежести. No-cache не обязательно запрещает хранить ответ: обычно оно требует проверки перед повторным использованием. No-store предназначено для запрета хранения ответа кешами.
Используйте валидаторы
ETag и Last-Modified помогают проверить изменение ресурса. При подтверждении актуальности сервер может вернуть 304 без полного тела. Это не ошибка, если браузер уже имеет подходящую копию.
Обновляйте адрес при долгом хранении
Файлы с хешем в имени удобно хранить долго: новый код получает новый URL. Если файл заменён по тому же адресу, слишком долгий срок может оставить пользователей на старой версии.
Если между сервером и посетителем работает CDN, правила обновления нужно проверить и на этом уровне. При сравнении сервисов доставки контента уточняйте настройку TTL, ключа кеша и очистку отдельных URL. Подключение CDN не отменяет запрет общего кеширования персональных ответов.
Важное ограничение
Контрольная проверка
- HTML и ресурсы имеют осознанные разные правила.
- Новая версия CSS получает новый адрес или версию.
- Авторизованные ответы не попадают в общий кеш.
- Проверены холодная и повторная загрузки.
Продолжить изучение: проверка ответа сервера, Network.