Где ставить кеш
Вопрос
Пройдите путь запроса от браузера до БД и расскажите, где можно кешировать и что именно.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Браузер: Cache-Control, ETag, иммутабельная статика с хешем в имени
CDN: статика, медиа, иногда целые публичные страницы
Обратный прокси: кеш ответов API
Приложение: локальный кеш в процессе и распределённый Redis
БД: буферный кеш и кеш ОС, материализованные представления
Что могут спросить следом
- Чем опасен кеш на CDN для персональных данных?
- Когда локальный кеш лучше Redis?
Разбор
В браузере кешируем статику: файлы с хешем в имени с Cache-Control: max-age=31536000, immutable, а HTML с проверкой через ETag. CDN отдаёт статику и медиа, иногда публичные страницы целиком с коротким TTL. Обратный прокси, например nginx, может кешировать ответы API, одинаковые для всех. В приложении есть локальный кеш в памяти, самый быстрый, но разный у экземпляров, и Redis, общий для всех. В самой БД работает буферный кеш и кеш ОС, плюс можно заранее считать тяжёлые агрегаты в материализованные представления. Персональные ответы нельзя кешировать на общих уровнях без ключа по пользователю, иначе один увидит данные другого.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.