CDN (content delivery network) – это сеть доставки контента. Она представляет собой большое количество связанных между собой серверов, расположенных в разных географических точках, и предназначается для ускорения передачи содержимого веб-ресурса конечному пользователю.
С помощью этой технологии можно кэшировать и сохранять многие элементы сайта, относящиеся к статическому (неизменяемому) контенту, в том числе изображения, аудио и видео, файлы JS и CSS). CDN хранит копии статического контента сайтов на своих серверах по всему миру, и когда пользователь открывает веб-ресурс, загрузка содержимого для него будет осуществляться с ближайшего сервера сети. Таким образом, трафик проходит по оптимальному маршруту, снижается нагрузка на сеть, достигается максимальная скорость соединения. В результате сайты, использующие CDN, загружаются быстрее.
Кроме того, для улучшения скорости загрузки сайта в CDN может осуществляться функция сжатия контента (текстов, изображений) и минификация кодов CSS и JS.
Некоторые CDN-провайдеры обрабатывают не только статические, но и динамические данные (изменяемые и адаптированные под конкретного пользователя, которые генерируются на сервере в момент получения запроса). Ускорение доставки динамического контента при использовании CDN достигается за счет выбора оптимального сетевого маршрута и улучшения пропускной способности. В отличие от отдельного сервера суммарная пропускная способность сети доставки контента легко масштабируется и практически не ограничена.
Также CDN применяется для раздачи стримингового контента (потокового аудио и видео). В стриминговых CDN поток данных ретранслируется на серверы, входящие в состав сети, а уже с них идет раздача пользователям. При этом с помощью балансировщиков нагрузки запросы перенаправляются к наименее загруженным на текущий момент серверам.
Для работы через CDN нужно создать домен вида cdn.domain.com, с которого будет идти раздача контента, и подключить его у CDN-провайдера. Как правило, клиентам предлагается два варианта URL-адреса CDN:
или
Пользователь набирает в строке браузера адрес www.domain.com, с которого он получает HTML-страницу. При этом весь статический контент, например, изображения или видео, подгружается из CDN (с адреса cdn.domain.com).
Чтобы подключить CDN к отдельным элементам страниц (изображениям, скриптам JS, стилям CSS и т.д.), нужно в исходном коде вашего сайта прописать их адреса на CDN-сервере, например, как показано на скриншоте ниже:
Для определения ближайших к пользователю кэширующих серверов используют технологии GeoDNS и AnyCast.
С помощью GeoDNS можно привязать к одному домену несколько IP-адресов. В зависимости от географического положения (которое определяется по IP-адресу, с которого был отправлен запрос) пользователь перенаправляется на ближайший к нему сервер.
При технологии AnyCast нескольким географически распределенным серверам присваивается один и тот же IP-адрес (IPv4 или IPv6), называемый anycast-адресом. Наиболее подходящий сервер выбирается системой маршрутизации.
Сети доставки контента относятся к достаточно дорогим видам услуг (в среднем, несколько тысяч рублей в месяц), поэтому критерий стоимости играет немаловажную роль при выборе конкретного поставщика.
Модели ценообразования могут быть различные:
Ежемесячная или годовая подписка (например, у провайдеров CDNvideo, CloudFlare):
Оплата за объем переданного через сеть контента (Amazon Cloudfront):
Чем больше трафик на серверы, тем меньше может быть стоимость одного Гб (Selectel):
Стоимость использования CDN зависит от количества задействованных серверов и их расположения, от входящих в пакет опций и т. д.
На рынке недорогих CDN можно найти тарифы от $0.01 (примерно 70 коп.) за 1 Гб трафика по факту потребления без необходимости покупать какую-либо месячную подписку (BunnyCDN):
Некоторые провайдеры предлагают бесплатный тестовый период, бесплатные тарифы для частных лиц и т.д.
Скорость работы веб-сайтов имеет всё большее значение для продвижения в поисковых системах. Так, в 2021 году Google сделал время, необходимое для загрузки основного содержимого страницы, одним из сигналов ранжирования в составе показателя Core Web Vitals.
Если сайт загружается слишком медленно, это может привести к потере пользователей, а значит, к ухудшению поведенческих факторов веб-ресурса и снижению продаж.
Исследования Google наглядно показывают, как время загрузки контента влияет на поведенческие метрики cайта. Например, по мере того, как время загрузки страницы увеличивается с одной до 10 секунд, вероятность того, что посетитель мобильного сайта уйдет, увеличивается на 123%.
Применение сетей доставки контента является одним из способов решения этой проблемы ― входящие в состав CDN географически распределенные cерверы помогают сделать время ответа сайта пользователям минимальным.
Повышается и надежность работы сайта – благодаря распределению по серверам CDN контент остается доступным даже во время пиковых нагрузок. В случае аварий и сбоев трафик автоматически направляется на другие сервера сети.
Когда на основном сервере файл будет изменён, на кэширующих серверах он останется в неизмененном виде. Для решения этой проблемы в современных CDN предусмотрена функция периодической очистки и обновления кэша, то есть удаления старого контента и замены его на свежие версии.
Если по той какой-либо причине будут заблокированы ваши «соседи» по IP CDN-провайдера, вместе с ними может оказаться заблокированным и ваш сайт. В этом случае следует отправить CDN-провайдеру запрос на изменение IP-адреса.
Поисковый робот может получить загрузку страницы не с вашего сайта, а с сервера CDN, который закэшировал картинку. Для поисковой системы это значит, что картинка находится не на вашем сайте, а на другом. В результате вы можете потерять трафик по картинкам. Чтобы этого избежать, можно отдавать поисковым роботам только версию с картинкой, которая хранится на вашем сервере, а не версию из CDN. Либо нужно выносить загрузку картинок на субдомен на своем же домене второго уровня, например, на cdn. domain.com, а также сохранять названия и иерархию файлов.
Например, если путь к изображению до использования CDN выглядел вот так:
www.domain.com/wp-content/uploads/2021/06/image1.png
то потом он должно выглядеть следующим образом:
cdn.domain.com/wp-content/uploads/2021/06/image1.png
Это поможет поисковой системе связать изображения с вашим сайтом, и вы сохраните трафик из поиска картинок.
Хотя аналитик Google Джон Мюллер заявлял, что нет SEO-бонуса за размещение изображений на одном хосте / домене, однако некоторые зарубежные исследования показывают, что при использовании CDN даже наличие субдоменов может не решить проблему и не гарантирует небольшим веб-сайтам улучшения позиций в поиске по картинкам.
CDN может вызвать проблемы с дублированием контента, если вы его неправильно настроите. Дубли возникают в случае индексирования поисковой системой копий страниц, загружаемых через CDN.
Кейс: С этой проблемой столкнулась одна из компаний, предоставляющих услуги SEO. В индекс Google попали полные копии страниц, которые сохранялись на CDN (компания кэшировала не только медиа-контент, но и сами веб-страницы). Поисковая система проиндексировала страницы на CDN-домене, и в результате получилось около 13,5 тыс. дублированных страниц.
Для решения этой проблемы нужно настроить канонический заголовок. Это дополнительный HTTP-заголовок, который добавляется в ваш CDN и сообщает сканеру Google, что контент в вашем CDN является только копией.
Также можно настроить атрибут rel=canonical тега <link>, указав в качестве канонического (предпочтительного для индексации) URL основного домена. Однако при наличии нескольких субдоменов такой способ подходит только для Google - Яндекс не будет учитывать кросс-доменный rel=canonical. Можно также запретить субдомен для индексации, но тогда не будут учитываться посещения пользователей, которые заходят на субдомен, что приведет к ухудшению поведенческих факторов веб-ресурса. Поэтому нужно выносить CDN-версию на отдельный субдомен cdn.domain.com, регистрировать его в панели Вебмастера, контролировать его индексацию и появление ошибок, которые могут возникнуть при использовании сетей доставки контента.
Изменение контента при доставке (минификация кода, структурные изменения) может быть связано с высокими рисками. Даже некорректно сокращение исходного кода за счет удаления лишних пробелов, неважных элементов и т. д. может плохо сказаться на работоспособности веб-ресурса. Более значимые изменения (перенос кода JS в конец HTML-страницы, объединение файлов) в случае ошибки могут нарушить функционирование сайта в еще большей степени.
Так, например, один из обзоров поставщиков услуг CDN предупреждает, что если вы используете сервис Microsoft Azure, который сжимает изображения и оптимизирует HTML, CSS и JavaScript, нужно быть осторожным при оптимизации файлов CSS, поскольку этот CDN-сервис может некорректно изменять файлы таблиц стилей контента.
Таким образом, не получится автоматизировать всю оптимизацию контента, необходимую для ускорения веб-ресурса. Например, удаление неиспользуемого или дублирующего кода должно выполняться в ручном режиме. Как правило, все функции такой оптимизации в CDN управляются настройками, и те из них, которые связаны с наибольшими рисками, по умолчанию отключаются.
Сами по себе серверы CDN защищают исходный сервер от хакерских атак, но, с другой стороны, их использование создает больше возможностей для хакеров. Компаниям нужно соблюдать осторожность, особенно при передаче конфиденциальных данных. Поэтому сетевая безопасность также является важным критерием при выборе провайдера CDN.
Поскольку контент больше не находятся только на вашем собственном сервере, а размещается также на нескольких серверах CDN, это приводит к определенной потере контроля над содержимым веб-ресурса.
Например, есть кейс, когда компания размещала все изображения на сервисе, ускоряющем их загрузку. Спустя год этот ресурс перестал существовать и на сайте, разместившем там контент, в один момент исчезли все изображения в интернет-магазине, блоге и т. д. В итоге его позиции резко упали, и потребовалось много времени, чтобы найти новые изображения и восстановить позиции сайта.
Прежде всего, CDN могут быть полезны:
Например, интернет-магазин Ozon хранит на CDN-серверах статический контент (все изображения, шрифты, js-скрипты).
Например, онлайн-кинотеатр ivi использует CDN (CDNvideo) для бесперебойной трансляции видеоконтента в странах СНГ и ближнего зарубежья.
Например, финская медиакомпания Rovio Entertainment, которая стоит за созданием и распространением серии игр Angry Birds, использует Amazon CloudFront, поскольку этот сервис помогает снизить задержку при вызовах API, а интеграция с AWS Shield и AWS WAF обеспечивает защиту от DDoS-атак.
Поскольку стоимость услуг CDN достаточно высока и использование данной технологии несёт в себе значительные риски, применять её имеет смысл крупным международным компаниям, передающим большое количество медиаконтента, с потоком которого не справляются их собственные серверы.
При этом важными условиями эффективного использования сети доставки контента являются:
Также нужно проверять скорость загрузки и другие показатели качества работы сайта до и после подключения CDN. Если показатели не улучшились, а ухудшились, следует отказаться от её использования.
Небольшим компаниям, у которых целевая аудитория сосредоточена в пределах одного региона, а на сайте нет большого объема «тяжёлых» статических данных (изображений, видео, аудио и т. п.), нет необходимости использовать сеть доставки контента.
В этом случае проблема медленной загрузки сайта решается проведением технических работ на самом ресурсе. Причинами низкой скорости его работы могут быть:
Проверить скорость загрузки сайта вы можете с помощью отчета сервиса Labrika «Скорость и юзабилити», который показывает оценку скоростных показателей и дает рекомендации по их оптимизации.
О том, как ещё можно улучшить скорость работы сайта, читайте в отдельной статье на Labrika.ru.
Читать дальше подобные статьи