Битлента
Словарь терминов3 мин чтения·

CDN: сеть доставки контента и как она ускоряет сайты

Что такое CDN: как копии файлов размещаются ближе к пользователю, роль кеша и DNS, что доставляется через сеть, какие есть побочные эффекты и как определить CDN у сайта.

Ближе к читателю: идея сети доставки

Скорость света в оптоволокне конечна, и ответ от сервера на другом континенте приходит заметно позже, чем от соседнего города. Сеть доставки контента, CDN, решает эту проблему географически: компания размещает множество серверов в разных странах и городах, и нужные копии файлов лежат там, откуда до пользователя короче путь. Исходный сервер сайта, называемый оригином, остаётся единственным источником правды, а копии на краевых узлах служат для быстрой раздачи.

Выигрыш двойной. Уменьшается задержка для пользователя, а оригин освобождается от большей части запросов, поэтому выдерживает всплески посещаемости. Поэтому CDN используют новостные сайты, магазины, видеосервисы, разработчики приложений.

Как запрос попадает на ближайший узел

Чаще всего используется DNS. Владелец сайта направляет домен, точнее его имя-псевдоним, на систему CDN, а её серверы имён при ответе выбирают узел с учётом местоположения запрашивающего резолвера и загрузки. Так разные пользователи получают разные IP-адреса для одного и того же имени. Второй способ — anycast, когда один и тот же IP-адрес объявляется из многих точек, а маршрутизация сама доставляет пакеты к ближайшей.

Оба подхода работают на разных уровнях, и многие сети комбинируют их. О записях, задающих псевдонимы, написано на странице про запись CNAME.

Кеш на краю и правила свежести

Краевой узел хранит копии файлов в кеше. Если запрошенный файл там есть и он свежий, узел отдаёт его сам, и это называют попаданием в кеш. Если нет — идёт к оригину, получает файл, отдаёт клиенту и запоминает на будущее. Время жизни копии определяют заголовки Cache-Control и Expires, а также настройки самой сети.

Статические файлы вроде картинок, скриптов, стилей и видео кешируются легко. Персональные страницы, например личный кабинет, кешировать нельзя, поэтому такой трафик просто проходит через сеть к оригину. Обновить устаревшую копию до истечения срока можно принудительной очисткой, «purge», либо сменой имени файла, к которому добавляют версию или хеш содержимого.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Что ещё делает CDN помимо раздачи файлов

Современные сети выполняют больше. Они завершают TLS-соединения ближе к клиенту, что уменьшает время рукопожатия, и используют HTTP/2 и HTTP/3 даже если оригин их не поддерживает. Они фильтруют вредоносные запросы и сглаживают DDoS-атаки, распределяя нагрузку по множеству узлов, а также выполняют небольшой код на краю сети.

Такая роль посредника имеет и обратную сторону. Часть трафика проходит через инфраструктуру третьей стороны, которая видит запросы. К тому же IP-адрес, к которому вы подключаетесь, принадлежит сети доставки, а не самому сайту, поэтому по адресу нельзя однозначно сказать, чей это сайт. Связка с индикацией имени рассмотрена на странице про SNI.

Заблуждения: CDN

Первое заблуждение: CDN ускоряет любые страницы. Для динамического содержимого, которое нельзя кешировать, выигрыш бывает небольшим и сводится к оптимизации маршрута и соединения. Второе: сеть доставки заменяет хостинг. Оригин по-прежнему нужен, и если он недоступен, а кеш истёк, пользователи увидят ошибку. Третье: с ней сайт неуязвим. Она снижает риски, но ошибки в самом приложении остаются.

Ещё встречается ошибка настройки: из-за неправильных заголовков кеша посетителям иногда показывается чужая персональная страница. Поэтому пути с авторизацией явно исключают из кеширования.

Полезный приём при разработке — проверять, что именно отдаёт сеть: запросить файл дважды и сравнить заголовки. Если во втором ответе появился признак попадания в кеш и возраст копии, значит правила работают. Если признаков нет, возможно, ответ оригина запрещает кеширование, например из-за заголовка Set-Cookie или директив no-store.

Как определить, что сайт за CDN

Простой способ — посмотреть заголовки ответа в инструментах разработчика: у многих сетей есть характерные поля с указанием узла и признака попадания в кеш, например значения hit и miss. Второй — выполнить в терминале nslookup или dig для имени сайта и посмотреть, на какие адреса и имена ведёт запись: цепочка CNAME к домену сети доставки говорит сама за себя.

Если страница у вас открывается медленно, а у знакомых из другого города быстро, причиной часто оказывается маршрут до краевого узла или его перегрузка, а не сам сайт.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
cdnпроизводительностьвеб

Часто задаваемые вопросы

Читайте также