В современном стеке разработки кэширование HTTP-ответов кажется рутиной. Добавляем Cache-Control: max-age=3600
, и можно переходить к следующим задачам, верно? Но именно эта иллюзия "простоты" приводит к тонким багам, чрезмерной нагрузке на серверы и разочарованным пользователям. Разберёмся, как настроить кэширование, избегая подводных камней.
Почему max-age ≠ "работает как надо"
Типичное заблуждение: время жизни контента (max-age
) — единственный параметр, который имеет значение. В реальности поведение кэширования зависит от цепочки устройств: CDN, инверсные прокси, браузеры — каждый может трактовать заголовки по-своему. Рассмотрим опасный пример:
Cache-Control: public, max-age=3600
Кажется безопасным? Теперь представьте ответ API с приватными данными пользователя, который случайно помечен как public
. CDN может отдать эти данные другому клиенту. Реальная авария подобного рода случилась с EU VAT API в 2020 году.
Исправление:
...