Получить доступ

Что делает CDN?

MiddleКэширование и CDN
Ещё спрашивают так:
  • Как работает сеть доставки контента?
  • Как сбросить кэш CDN после выкатки?
Коротко

CDN — сеть серверов по миру, которые кэшируют контент рядом с пользователями: меньше задержка и нагрузка на исходный сервер (origin).

  • Пользователь попадает на ближайший узел через DNS или Anycast
  • Статику кэшируют надолго с версией в имени файла (app.3f9a.js) — инвалидация не нужна
  • Динамику — коротко или с stale-while-revalidate; приватное — не кэшируют

А ещё Ещё: TLS у пользователя, защита от DDoS, сжатие, оптимизация картинок

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Как работает. Запрос пользователя приходит на ближайший узел (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?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем