Кеширование
Кэширование, капстоун: тест с выбором ответа
Шесть вопросов поперёк всего трека. Ни один не проверяет отдельную директиву в изоляции — каждый требует рассуждать о том, как компонуются два или больше уровня, а именно там и живут реальные баги кэширования.
Убедись, что связываешь владение уровнями, каскад TTL, защиту от stampede, валидаторы и stale-while-revalidate в единую связную стратегию — тот синтез, к которому вели отдельные юниты.
Запрос проходит через CDN, reverse proxy, Redis и БД. Редактор меняет товар, write-path обновляет БД и удаляет ключ Redis, но пользователи час видят старую цену. Где баг?
Ты ставишь CDN s-maxage=3600, но приложение ревалидирует свой фрагмент в Redis каждые 60с. Почему это баг композиции, независимо от того, какие числа корректны по отдельности?
Горячий ключ с тысячами параллельных читателей истёк. Можно добавить (a) per-key mutex, чтобы один запрос пересчитывал, пока остальные ждут, или (b) stale-while-revalidate. Сениор обычно сначала берёт SWR. Почему?
Публичное API-чтение стоит 40мс на вычисление и меняется редко. Нужны низкая задержка, низкая нагрузка на origin и экономия трафика на проводе. Какая комбинация компонует это правильно?
Залогиненный дашборд рендерит персональные платёжные данные и стоит за разделяемым CDN. Хэндлер возвращает 200 без Cache-Control. В чём реальный риск и правильное исправление?
Поперёк всего стека: какое утверждение о fail open во время сбоя origin верно?
Сквозная линия трека — единая скомпонованная стратегия: назначь каждому уровню данные, которыми он владеет, сокращай окна свежести наружу (или purge’ай внешний уровень на каждое внутреннее изменение), защищай origin на истечении горячего ключа через single-flight или SWR, экономь трафик через 304 на ETag, ограничивай персональные ответы через private/no-store, встраивай инвалидацию в write-path, чтобы она распространялась Redis → proxy → CDN по порядку, и fail open через stale-if-error, настроенный по-ресурсно. Ответ не в одной директиве; ответ в том, как уровни компонуются.