Ответ вслух Middle Кеширование обновлено

Где ставить кеш

Вопрос

Пройдите путь запроса от браузера до БД и расскажите, где можно кешировать и что именно.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

В браузере кешируем статику: файлы с хешем в имени с Cache-Control: max-age=31536000, immutable, а HTML с проверкой через ETag. CDN отдаёт статику и медиа, иногда публичные страницы целиком с коротким TTL.

Что должно прозвучать в ответе

  • Браузер: Cache-Control, ETag, иммутабельная статика с хешем в имени

  • CDN: статика, медиа, иногда целые публичные страницы

  • Обратный прокси: кеш ответов API

  • Приложение: локальный кеш в процессе и распределённый Redis

  • БД: буферный кеш и кеш ОС, материализованные представления

Что могут спросить следом

  • Чем опасен кеш на CDN для персональных данных?
  • Когда локальный кеш лучше Redis?

Разбор

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

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.