Можно восхищаться древностью, но следовать нужно современности (Тацит).

CDN

CDN (Content Delivery Network, сеть доставки контента) — это распределённая сеть серверов, расположенных в разных точках мира и предназначенных для более быстрой, стабильной и эффективной доставки интернет-контента пользователям. Вместо того чтобы каждый посетитель напрямую загружал все данные с одного центрального сервера, часть информации может передаваться с ближайшего к пользователю узла CDN.

На таких узлах могут временно храниться копии статических файлов: изображений, таблиц стилей CSS, JavaScript, видео, шрифтов, документов и других ресурсов. Когда пользователь запрашивает уже сохранённый в CDN объект, сервер сети доставки может вернуть его непосредственно из своего кэша, не обращаясь каждый раз к исходному серверу сайта. Это уменьшает задержку и количество запросов к основной инфраструктуре.

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

Как расшифровывается CDN

Аббревиатура CDN расшифровывается как Content Delivery Network — «сеть доставки контента». Иногда встречается также термин Content Distribution Network, который фактически описывает ту же концепцию.

Главная идея CDN заключается в распределении контента между множеством серверов. Эти серверы находятся ближе к конечным пользователям, чем единый центральный сервер сайта. MDN описывает CDN как группу серверов, распределённых по разным местоположениям и хранящих копии данных для их выдачи пользователям.

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

Как работает CDN

Принцип работы CDN проще всего рассмотреть на примере изображения. Допустим, на сайте есть файл:

https://example.com/images/photo.jpg

Если посетитель впервые запрашивает этот файл через CDN, соответствующий edge-сервер может не иметь его локальной копии. Тогда CDN обращается к origin-серверу, получает файл и сохраняет его в своём кэше в соответствии с установленными правилами.

При следующем запросе к этому же ресурсу CDN может проверить собственную копию. Если объект ещё считается актуальным, он передаётся пользователю непосредственно с edge-сервера.

Упрощённо последовательность выглядит так:

  1. пользователь запрашивает ресурс сайта;
  2. запрос направляется в инфраструктуру CDN;
  3. определяется подходящий edge-сервер;
  4. CDN проверяет наличие объекта в кэше;
  5. при наличии актуальной копии объект отдаётся пользователю;
  6. при отсутствии подходящей копии CDN получает данные с origin-сервера;
  7. полученный объект может быть сохранён в кэше для последующих запросов.

Что такое origin-сервер

Origin-сервер — это исходный сервер, на котором находится оригинальная версия ресурса. Им может быть обычный веб-сервер Apache или Nginx, сервер приложения, объектное хранилище или другая инфраструктура, откуда CDN получает данные.

Например, интернет-магазин может хранить изображения товаров на собственном сервере, а CDN будет распространять их копии по множеству edge-узлов.

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

Таким образом, CDN позволяет отделить место хранения оригинального контента от мест, с которых этот контент фактически получают пользователи.

Что такое edge-сервер

Edge-сервер — это узел CDN, расположенный ближе к конечному пользователю относительно origin-сервера. На нём могут храниться кэшированные копии ресурсов.

Количество и расположение edge-серверов зависит от конкретного CDN-провайдера. Чем плотнее распределена сеть, тем больше вероятность, что пользователь сможет получить ресурс через относительно близкую точку присутствия.

Например, один и тот же сайт может обслуживать посетителей из Европы, Азии и Северной Америки через разные узлы CDN. При этом владельцу сайта не требуется самостоятельно размещать полноценный веб-сервер в каждом регионе.

Что такое CDN-кэш

Кэш — одна из главных составляющих работы CDN. Он представляет собой временное хранилище ранее полученных ответов и объектов, которые можно повторно использовать для последующих запросов.

HTTP определяет стандартные механизмы управления кэшированием с помощью заголовков. Например, сервер может сообщать кэшу, как долго ответ считается актуальным и при каких условиях его необходимо проверить заново. Современный стандарт HTTP-кэширования описан в RFC 9111.

Для CDN также существует специальный заголовок CDN-Cache-Control, позволяющий задавать отдельные правила кэширования непосредственно для CDN-кэшей. Такой механизм стандартизирован в RFC 9213.

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

Какие файлы обычно передаются через CDN

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

Через CDN часто передаются:

  • изображения JPG, PNG, WebP и AVIF;
  • таблицы стилей CSS;
  • файлы JavaScript;
  • веб-шрифты;
  • видео и аудиофайлы;
  • дистрибутивы и другие крупные файлы;
  • статические HTML-страницы;
  • часть API-ответов и динамического контента при соответствующей настройке.

CDN для изображений

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

CDN позволяет хранить копии изображений на распределённых узлах. Если один и тот же файл запрашивают тысячи пользователей, origin-серверу необязательно передавать его каждому посетителю отдельно.

Дополнительным преимуществом некоторых CDN являются инструменты оптимизации изображений. В зависимости от конкретного сервиса они могут автоматически изменять формат, размеры или качество изображения под характеристики устройства и запроса.

CDN для CSS и JavaScript

CDN широко используется для распространения статических библиотек и frontend-ресурсов. Например, CSS-файл или JavaScript-библиотека может загружаться с CDN вместо сервера самого сайта.

MDN отмечает распространённость CDN для таких статических ресурсов, как Bootstrap, jQuery и других библиотек. Распределённая инфраструктура позволяет уменьшить количество запросов к серверу сайта и приблизить статические файлы к пользователю.

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

Ускоряет ли CDN сайт

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

Кроме физического расстояния, значение имеет разгрузка origin-сервера. Если популярный статический файл уже находится в кэше, серверу не требуется формировать и передавать его заново для каждого запроса.

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

CDN и динамический контент

Не весь контент можно безопасно кэшировать. Например, личная страница пользователя, корзина интернет-магазина или ответ API, зависящий от конкретной сессии, может содержать индивидуальные данные.

Поэтому динамические страницы часто передаются непосредственно от origin-сервера, тогда как изображения, CSS, JavaScript и другие статические ресурсы кэшируются на edge-узлах.

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

CDN и DNS

DNS играет важную роль в некоторых архитектурах CDN, поскольку доменное имя может направлять пользователя в инфраструктуру сети доставки.

Один из распространённых вариантов — использование CDN как reverse proxy. В таком случае пользователь обращается к домену сайта, а запрос сначала попадает в CDN. Сервис определяет подходящий узел, применяет правила безопасности и кэширования, а при необходимости обращается к origin.

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

CDN как reverse proxy

Reverse proxy — это сервер, который принимает запросы пользователей и от имени исходной инфраструктуры передаёт их дальше. CDN может выполнять роль reverse proxy, находясь между посетителем и origin-сервером.

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

В результате origin-сервер может быть скрыт за инфраструктурой CDN, а внешние пользователи взаимодействуют преимущественно с распределёнными edge-узлами.

CDN и защита от DDoS

CDN часто используется не только для ускорения, но и для повышения устойчивости веб-сервисов. Большая распределённая сеть способна принять значительный объём запросов и не передавать весь трафик непосредственно на origin.

Некоторые CDN-провайдеры предоставляют специальные механизмы защиты от DDoS-атак, ограничения запросов, фильтрации ботов и других видов нежелательного трафика. AWS и Cloudflare прямо указывают защиту и снижение нагрузки на origin среди возможных преимуществ CDN.

Однако наличие CDN не означает автоматической защиты от всех атак. Эффективность зависит от архитектуры, настроек фильтрации, типа атаки и конкретных возможностей используемого провайдера.

CDN и SSL-сертификат

Современные CDN обычно работают с HTTPS и могут участвовать в обработке TLS-соединения. В зависимости от архитектуры шифрованное соединение может завершаться на edge-сервере, после чего CDN устанавливает отдельное защищённое соединение с origin.

Это позволяет централизовать часть настроек TLS и использовать распределённую инфраструктуру для обработки HTTPS-запросов.

При этом владельцу сайта необходимо правильно настроить сертификаты и режим соединения между CDN и origin. Если между CDN и исходным сервером используется незащищённое соединение, это может снижать общий уровень безопасности архитектуры.

Преимущества CDN

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

Основные преимущества:

  • снижение сетевой задержки для пользователей;
  • ускорение доставки статических ресурсов;
  • снижение нагрузки на origin-сервер;
  • уменьшение объёма трафика между пользователями и исходным сервером;
  • повышение доступности контента за счёт распределённой инфраструктуры;
  • возможность обработки больших скачков нагрузки;
  • дополнительные инструменты безопасности;
  • возможность централизованного управления кэшированием.

Недостатки CDN

Несмотря на преимущества, CDN добавляет в инфраструктуру дополнительный слой. Это означает, что администратор должен учитывать ещё одну систему при диагностике проблем.

Например, после обновления CSS-файла посетитель может некоторое время получать старую версию из CDN-кэша. При неправильной конфигурации можно столкнуться с неожиданным кэшированием динамического содержимого.

Кроме того, некоторые CDN являются внешними коммерческими сервисами. Их стоимость, ограничения, региональная доступность и правила использования необходимо учитывать при проектировании инфраструктуры.

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

Что такое cache hit и cache miss

При работе CDN часто используются два важных термина — cache hit и cache miss.

Cache hit означает, что CDN нашла в своём кэше подходящую актуальную копию ресурса и может вернуть её пользователю без обращения к origin.

Cache miss означает, что подходящей копии на данном edge-узле нет либо она не может быть использована. В этом случае CDN обычно обращается к origin, получает объект и затем может сохранить его для последующих запросов.

Чем выше доля cache hit для подходящих ресурсов, тем меньше запросов требуется передавать на исходный сервер. При этом высокий hit ratio сам по себе не гарантирует быстрый сайт: значение имеют размер объектов, время ответа origin, сетевые задержки и множество других факторов.

Что такое TTL в CDN

TTL (Time To Live) в контексте кэширования определяет период, в течение которого сохранённый объект может считаться актуальным согласно установленной политике.

Например, если изображение имеет длительный TTL, CDN может хранить его копию продолжительное время и редко обращаться к origin. Для часто изменяющегося HTML-документа TTL обычно выбирают значительно осторожнее.

Продолжительность кэширования может задаваться HTTP-заголовками, настройками CDN и дополнительными правилами. RFC 9111 описывает стандартные механизмы HTTP-кэширования и условия, при которых сохранённый ответ может использоваться повторно.

Очистка CDN-кэша

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

Например, после замены изображения администратор может удалить старую копию из CDN. При следующем запросе CDN получит новую версию с origin.

Другой распространённый подход — изменение URL ресурса после обновления. Например, вместо style.css используется style.v2.css или URL с версией. Такой подход позволяет браузерам и CDN различать старый и новый объект.

CDN для WordPress

CDN часто применяется в WordPress-сайтах для распространения изображений, CSS, JavaScript, шрифтов и других статических ресурсов. В более сложных конфигурациях CDN может также работать как reverse proxy перед всем сайтом.

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

Поэтому при настройке CDN для WordPress важно разделять кэшируемые и некэшируемые запросы. Например, изображения и CSS обычно подходят для CDN гораздо лучше, чем страницы личного кабинета или результаты индивидуального AJAX-запроса.

Чем CDN отличается от обычного хостинга

Хостинг предоставляет вычислительные ресурсы, дисковое пространство, сетевые подключения и среду, в которой работает сайт или приложение. CDN решает другую задачу — распределяет доставку контента между множеством сетевых узлов.

CDN не обязательно заменяет origin-сервер. Напротив, в типичной архитектуре он работает вместе с ним. Origin хранит и генерирует исходные данные, а CDN помогает доставлять часто запрашиваемый контент пользователям с edge-серверов.

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

Популярные CDN-сервисы

На рынке существует множество CDN-провайдеров. Среди известных решений можно выделить Cloudflare CDN, Amazon CloudFront, Fastly и другие специализированные платформы.

Конкретный выбор зависит от географии аудитории, типа контента, требований к кэшированию, безопасности, стоимости и необходимой интеграции с инфраструктурой.

Например, Amazon CloudFront использует распределённые edge locations и направляет запросы к подходящей точке присутствия, где контент может быть выдан из кэша либо получен с настроенного origin.

Нужна ли CDN небольшому сайту

Не каждому небольшому сайту CDN необходима. Если сервер находится в том же регионе, где расположена основная аудитория, страницы уже быстро формируются, а объём статических файлов невелик, эффект может быть ограниченным.

CDN становится более интересной, когда аудитория географически распределена, сайт содержит много изображений или видео, наблюдаются скачки нагрузки либо необходимо снизить количество запросов к origin-серверу.

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

Выводы

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

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

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

Однако CDN не является универсальным средством ускорения сайта. Она не исправляет медленный PHP-код, неоптимальную базу данных или тяжёлую серверную логику. Наибольший эффект CDN даёт тогда, когда её возможности правильно сочетаются с оптимизированным origin-сервером, HTTP-кэшированием и хорошо настроенной веб-инфраструктурой.

FAQ — часто задаваемые вопросы

Что такое CDN простыми словами?

CDN — это сеть распределённых серверов, которая хранит копии интернет-контента и позволяет отдавать его пользователям с подходящего близкого узла вместо постоянного обращения к исходному серверу.

Для чего нужна CDN?

CDN используется для ускорения доставки контента, уменьшения нагрузки на origin-сервер, снижения сетевых задержек и повышения устойчивости веб-сервисов.

Что означает CDN?

CDN означает Content Delivery Network — «сеть доставки контента».

Что такое origin-сервер?

Origin-сервер — исходный сервер, где находится оригинальная версия контента. CDN получает от него ресурсы, если подходящей копии нет в кэше.

Что такое edge-сервер?

Edge-сервер — узел CDN, расположенный ближе к конечному пользователю и способный обслуживать запросы из локального кэша.

Ускоряет ли CDN сайт?

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

Что можно хранить в CDN?

Обычно через CDN передаются изображения, CSS, JavaScript, шрифты, видео и другие статические ресурсы. Некоторые CDN также позволяют кэшировать отдельные виды динамического контента.

Что такое cache hit?

Cache hit означает, что запрошенный объект уже есть в подходящем CDN-кэше и может быть отдан без обращения к origin-серверу.

Что такое cache miss?

Cache miss означает, что подходящего объекта в кэше нет или его нельзя использовать. В такой ситуации CDN обычно получает ресурс с origin.

Можно ли использовать CDN для WordPress?

Да. CDN часто используется для доставки изображений, CSS, JavaScript и других статических ресурсов WordPress. При использовании reverse proxy необходимо отдельно настроить правила для динамических страниц, cookies, авторизации и административной части.

Заменяет ли CDN хостинг?

Нет. CDN и хостинг решают разные задачи. CDN обычно работает вместе с origin-сервером, помогая распределять и кэшировать доставку контента.

Защищает ли CDN от DDoS?

Некоторые CDN предоставляют механизмы защиты и фильтрации DDoS-трафика, однако конкретный уровень защиты зависит от выбранного провайдера, тарифа, архитектуры и настроек.

Что такое TTL в CDN?

TTL определяет период актуальности сохранённого объекта в кэше согласно установленной политике. Чем дольше объект считается свежим, тем реже CDN может обращаться к origin за его обновлением.

Дополнительная информация:

  • Что такое CDN — Amazon Web Services: https://aws.amazon.com/what-is/cdn/
  • Что такое CDN — Cloudflare Learning Center: https://www.cloudflare.com/learning/cdn/what-is-a-cdn/
  • CDN — MDN Web Docs: https://developer.mozilla.org/en-US/docs/Glossary/CDN
  • Архитектура CDN — Cloudflare Developers: https://developers.cloudflare.com/reference-architecture/architectures/cdn/
  • RFC 9111 — HTTP Caching: https://www.rfc-editor.org/rfc/rfc9111.html
  • RFC 9213 — Targeted HTTP Cache Control: https://www.rfc-editor.org/rfc/rfc9213.html
  • Документация Amazon CloudFront: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html
Тестирование глобальной CDN вашего сайта с помощью командной строки

Тестирование глобальной CDN вашего сайта с помощью командной строки

Ваш сайт загружается за 300 миллисекунд в вашей локальной системе. Вы развертываете сеть доставки контента (CDN) — систему серверов, расположенных в разных местах, которые хранят копии вашего контента ближе к пользователям. Все выглядит быстро. Вы считаете, что дело сделано.Но пользователь на другом континенте жалуется на медленную загрузку. На вашей панели мониторинга нет никаких проблем. Это сбивает с
Как с помощью CDN ускорить сайт или приложение: подробный технический разбор

Как с помощью CDN ускорить сайт или приложение: подробный технический разбор

 Производительность сайта или веб-приложения — один из ключевых факторов пользовательского опыта и успешности проекта. Задержки даже в 1–2 секунды могут привести к потере клиентов, снижению конверсии и ухудшению позиций в поисковой выдаче. Один из самых эффективных способов ускорения загрузки ресурсов — это использование CDN (Content Delivery Network, сеть доставки контента).В этой статье мы подробно разберём,
CDN: перспективы и будущее

CDN: перспективы и будущее

CDN (Content Delivery Network) или сеть доставки контента представляет собой распределенную систему серверов, расположенных по всему миру, которая значительно ускоряет загрузку веб-страниц и других цифровых ресурсов для конечных пользователей. Цели CDNПринцип работы CDN: Кэширование контента: CDN хранят копии статического контента (изображений, CSS, JavaScript) на своих серверах, которые расположены ближе к пользователям. Оптимизация маршрутизации: Когда пользователь запрашивает страницу, запрос направляется
Мониторинг журналов CDN: лучшие практики

Мониторинг журналов CDN: лучшие практики

Сеть доставки контента, или CDN, представляет собой сеть серверов, которая распределенным образом предоставляет контент веб-сайта пользователям в пределах их географической близости. CDN помогает пользователям по всему миру быстрее загружать приложения — независимо от того, где приложение расположено — с помощью служб кэширования, которые снижают задержку.CDN направлен на улучшение взаимодействия с пользователем (UX) и снижение сетевых
Топ-7 провайдеров WordPress CDN в 2019 году

Топ-7 провайдеров WordPress CDN в 2019 году

Когда вы запускаете веб-сайт на WordPress, какая из первых вещей появляется в вашей голове? Он должен иметь хороший дизайн, иметь хорошую читаемость, он должен быть БЫСТРЫМ. Последнее, возможно, не первое, о чем вы думаете, но это, пожалуй, самый важный фактор для рассмотрения.Помните, когда в последний раз веб-сайт загружался на миллисекунду дольше, чем обычно. Вы, должно быть,
Прокрутить страницу до начала