CDN: когда нужен сайту
CDN хранит копии файлов сайта на серверах по всему миру и отдаёт их посетителю с ближайшего. Это ускоряет загрузку картинок, скриптов и видео и снимает нагрузку с вашего сервера, но не делает быстрее медленный движок и не заменяет правильный выбор страны сервера. Разберём, в каких случаях CDN действительно нужен, а когда хватит одного VPS в нужном месте.
CDN (content delivery network, сеть доставки контента) — это прослойка между посетителем и вашим сервером. Запись DNS домена указывает не на сервер, а на CDN. Посетитель подключается к ближайшему узлу сети, узел отдаёт то, что у него есть в кэше, а за остальным обращается к вашему серверу, который в этой схеме называют источником (origin).
Что CDN делает
- Отдаёт статические файлы рядом с посетителем. Картинки, CSS, JavaScript, шрифты, видео загружаются с узла в той же стране или соседней, а не с другого континента.
- Сокращает установку соединения. Шифрованное соединение устанавливается с ближайшим узлом. Даже в TLS 1.3 рукопожатие занимает отдельный круг туда и обратно (RFC 8446), и при пинге 150 мс до сервера на другом континенте одно только соединение отнимает около трети секунды.
- Разгружает сервер и канал. Если 90% запросов отдаёт кэш, серверу достаётся десятая часть трафика. Это позволяет обойтись тарифом меньше и не упираться в лимит трафика, о котором рассказано в статье Канал и трафик: что значит 1 Гбит/с и безлимит.
- Принимает на себя часть атак. Об этом — отдельный раздел ниже.
Чего CDN не делает
- Не ускоряет то, что не кэшируется. Корзина, личный кабинет, поиск, API, страницы для вошедших пользователей каждый раз запрашиваются у источника. Если страница собирается две секунды из-за медленной базы данных, с CDN она будет собираться те же две секунды. Здесь помогает сервер мощнее или оптимизация — см. статью Сколько памяти и ядер нужно сайту.
- Не защищает сервер, адрес которого известен. Атака напрямую на IP источника проходит мимо CDN.
- Не заменяет резервные копии. В кэше лежит только часть файлов и только на время; восстановить из него сайт нельзя.
- Добавляет зависимость. Сбой CDN или ошибка в его настройках выключает сайт так же, как сбой сервера.
Когда хватит сервера ближе к посетителям
Если посетители в одной стране или в одном регионе, самый простой способ ускорить сайт — поставить сервер там же. Каждые 100 км по прямой добавляют к пингу около миллисекунды, и сервер в стране аудитории обычно отвечает за 5–30 мс. Такой сайт с CDN станет быстрее ненамного, а без CDN проще в настройке. Как выбрать площадку и проверить пинг до оплаты, описано в статьях Как выбрать страну для сервера и Как проверить пинг и скорость VPS до оплаты; тарифы с короткой задержкой из России собраны в подборке VPS с низким пингом.
CDN нужен, когда аудитория на разных континентах, когда на сайте много тяжёлых файлов — каталог с фотографиями, видео, загрузки, — или когда трафик бывает пиковым: распродажа, письмо подписчикам, публикация в СМИ. Альтернатива для аудитории в двух-трёх регионах — по серверу в каждом. По каталогу accsly.io на ноябрь 2026 года тарифы VPS есть в 96 странах, у 400 хостеров серверы стоят в пяти странах и больше, а у 155 — в десяти и больше, так что несколько площадок можно взять у одного хостера. Но несколько серверов придётся синхронизировать, а CDN кэширует файлы с одного.
Правила кэширования
CDN решает, что хранить и сколько, по заголовкам ответа вашего сервера, в первую очередь по Cache-Control (RFC 9111):
max-age— сколько секунд ответ можно хранить,s-maxage— то же только для CDN и прокси;private— ответ для одного пользователя, хранить его может только браузер, но не CDN;no-store— не хранить нигде.
Рабочая схема для большинства сайтов: файлы с версией в имени (app.3f2a.css) отдаются с max-age на год и признаком immutable (RFC 8246), а при изменении меняется имя. HTML кэшируется на минуты или не кэшируется вовсе. Страницы с сессией, корзиной и личными данными помечаются private или no-store.
У CDN есть и свои правила по умолчанию. Например, Cloudflare не кэширует HTML и JSON, а также ответы с заголовком Set-Cookie или с Cache-Control: private. Если включить кэширование всех страниц правилом, которое не учитывает эти заголовки, CDN может отдать одному посетителю страницу, сформированную для другого, вместе с его именем и заказами. Включайте такое правило только для адресов, где точно нет персональных данных.
Проверить, что ответ пришёл из кэша, можно командой curl -I https://example.com/app.css: заголовок Age показывает, сколько секунд ответ хранится, а статус кэша CDN пишет в собственный заголовок, название которого есть в его документации.
CDN и защита от DDoS
У крупных CDN каналы и число узлов на порядки больше, чем у одного дата-центра, поэтому объёмные атаки распределяются по сети и не доходят до вашего сервера. Атаки на уровне приложения CDN фильтрует правилами: ограничением частоты запросов, проверкой браузера, блокировкой по стране или адресу. Это дополняет защиту хостера, а не заменяет её: по каталогу accsly.io на ноябрь 2026 года защиту от DDoS заявляют 1 123 из 2 243 хостеров с тарифами VPS, и обычно это фильтрация сетевого уровня. Что именно скрывается за такой строкой в тарифе, разобрано в статье Защита от DDoS: что на самом деле дают хостеры; тарифы с ней собраны в подборке VPS с защитой от DDoS.
Защита через CDN работает, только пока адрес источника неизвестен. Разрешите на сервере входящие подключения к портам 80 и 443 только с диапазонов адресов CDN — их публикует каждый провайдер. Не держите почту и другие службы на том же IP, что и сайт: записи MX и заголовки писем выдают адрес. После подключения CDN смените IP сервера, если старый уже был в публичных записях DNS: их история хранится в открытых базах.
Сколько стоит
Цена CDN складывается из переданного трафика, числа запросов и дополнительных функций. Встречаются три модели:
- Бесплатный тариф с ограничениями по объёму или функциям. Небольшому сайту его часто хватает полностью. Например, у Amazon CloudFront в бесплатном тарифе миллион запросов и 100 ГБ в месяц.
- Оплата за гигабайт с ценой по регионам. У bunny.net, например, от 0,01 доллара за гигабайт в Европе и Северной Америке и в 3–6 раз дороже в других регионах. Видео и большие загрузки в такой модели становятся главной статьёй расходов.
- Фиксированная месячная плата за пакет трафика и запросов, без доплаты за превышение в пределах тарифа.
Отдельно платят за защиту приложений (WAF), оптимизацию изображений, хранение логов и выделенные адреса. Перед подключением сравните цену CDN с ценой трафика у хостера: если сервер уже включает несколько терабайт в месяц, а аудитория рядом, CDN ради экономии трафика не нужен.
Как подключить и не сломать сайт
- Выберите схему. Можно передать CDN всю зону домена, сменив DNS-серверы у регистратора, а можно направить через CDN только поддомен для статики записью CNAME, например
static.example.com. Второй вариант проще отменить. Как работают эти записи, рассказано в статье Домены и DNS для владельца сервера. - Настройте шифрование до источника. Соединение между CDN и сервером тоже должно идти по HTTPS с проверкой сертификата. Режим, в котором CDN подключается к серверу по HTTP, оставляет трафик открытым на этом участке. О сертификатах — статья SSL-сертификаты: бесплатные и платные.
- Передайте серверу настоящий IP посетителя. Иначе журналы, ограничения частоты и fail2ban будут видеть только адреса CDN. CDN передаёт адрес в заголовке, а веб-сервер нужно настроить доверять ему только с адресов CDN.
- Проверьте узлы для своей аудитории. Посмотрите карту узлов CDN и измерьте задержку из регионов, где ваши посетители, в том числе из России, если сайт работает для неё. CDN без узлов рядом с аудиторией может оказаться медленнее, чем прямой доступ к серверу.