Что делает CDN?
- Как работает сеть доставки контента?
- Как сбросить кэш CDN после выкатки?
CDN — сеть серверов по миру, которые кэшируют контент рядом с пользователями: меньше задержка и нагрузка на исходный сервер (origin).
- Пользователь попадает на ближайший узел через DNS или Anycast
- Статику кэшируют надолго с версией в имени файла (app.3f9a.js) — инвалидация не нужна
- Динамику — коротко или с stale-while-revalidate; приватное — не кэшируют
А ещё Ещё: TLS у пользователя, защита от DDoS, сжатие, оптимизация картинок
Подробно
Как работает. Запрос пользователя приходит на ближайший узел (edge) — по геолокации в DNS или через Anycast. Если объект есть в кэше узла и не устарел, он отдаётся сразу. Иначе узел идёт к origin (иногда через промежуточный уровень — origin shield, чтобы не все узлы били в origin), кэширует ответ и отдаёт.
Выгода: задержка до узла — единицы миллисекунд вместо сотни до другого континента; трафик и нагрузка на origin падают в разы; TLS и TCP устанавливаются с близким узлом; поглощаются всплески и DDoS.
Что кэшировать и как долго решают заголовки Cache-Control (max-age, s-maxage для общих кэшей, private, no-store) и правила CDN:
- статика с хешем в имени (
app.3f9a.js) — на год,immutable; новая версия — новое имя, сбрасывать ничего не нужно; - HTML и API-ответы — коротко (секунды или минуты) или
stale-while-revalidate: отдать устаревшее и обновить в фоне; - персональные данные —
privateили не кэшировать вовсе, иначе один пользователь увидит чужое.
Инвалидация — через API CDN (purge по пути, тегу, префиксу); работает не мгновенно и стоит денег, поэтому лучше версионировать имена.
Ключ кэша — URL плюс выбранные заголовки и cookie; лишние параметры (метки рекламы) дробят кэш и снижают попадания.
Что хотят услышать
- Кэш на узлах рядом с пользователем и маршрутизация на ближайший.
- Выгоды: задержка, нагрузка на origin, защита.
- Управление через Cache-Control, версионирование статики.
- Осторожность с персональными данными, инвалидация.
Частые ошибки
- Кэшировать на CDN ответы с cookie сессии.
- Полагаться на ручной сброс кэша вместо версий в именах файлов.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✓Отдаёт контент с ближайшего к пользователю узла
- ✗Балансирует запросы между репликами базы данных в разных регионах
- ✗Шифрует весь трафик между клиентом и сервером приложения
- ✗Преобразует доменные имена в IP-адреса серверов приложения
Что спросят дальше
- Что такое edge-узел?
- Как инвалидировать контент в CDN?
Разбор темы
- Кэширование и CDN
Кэш как размен согласованности на задержку, hit rate и слои, стратегии чтения и записи, инвалидация и гонка с записью, stampede и лавина, вытеснение и горячие ключи, CDN и ключ кэша.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.