Веб-разработка
August 4, 2022

CDN. Что это и зачем?

Кому будет полезно?

Будет полезно всем, кому в проектах важна скорость загрузки контента у пользователей. А это почти любой сайт или мобильное приложение.

Простыми словами

Любой сайт и любое приложение, которое доставляет онлайн контент рано или поздно сталкивается с проблемой быстрой загрзки.

Пользователь горяч, нетерпелив и не любит когда у него отнимают его драгоценное время. Поэтому мы (разработчики) делаем все чтобы скорость загрузки стремилась к нулю.

CDN это очень полезная технология, которая позволяет нам решить эту задачу.

Итак, простыми словами...

CDN (Content Delivery Network) - это сеть серверов которые ускоряют доставку контента юзеру.

Например, наше прилоежние (контент) физически располагается на сервере в Германии, а юзер сидит в Австралии.

Расстояние, мягко говоря, приличное и чтобы передать какой-то увесестый файл придется подождать пока он пройдет по всей цепочке в сети.

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

Например вот так...

Ну, собственно все)

Сервера которые позволяют хранить копию нашего контента поближе к пользователю это и есть CDN.

Использовать CDN можно для доставки практически любого статичного контента:

  • Любые медиа-файлы (изображения, аудио, видео)
  • Стили
  • Скрипты
  • Шрифты
  • И т.д.

Но есть нюансы

Копаем чуть-чуть глубже

В общих чертах, вроде бы, все ясно. Но появляется несколько вопросов.

  • Как контент попадает в CDN?
  • Если контент изменился как его обновить на серверах CDN-провайдера?
  • Как подключить CDN?
  • Это дорого?

Как контент попадает в CDN?

Базовый принцип работы CDN очень простой. Например мы хотим загрузить картину.

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

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

А вдруг мы случайно закинули на наш сервер битую картинку

Если контент изменился как его обновить на серверах CDN-провайдера?

Вариантов немного. Либо сброс кэша кнопкой в кабинете провайдера. Либо HTTP заголовки которые контролируют время жизни CDN-кэша.

Как подключить CDN?

В общем виде работает это так:

  1. Регистрируемся у CDN-провайдера
  2. В личном кабинете указываем наши сервера с контентом (origin)
  3. Делаем все необходимые настройки (что кешируем, на какое время и т.д.)
  4. CDN-провайдер дает нам домен, который будет нашей входной точкой в сеть CDN (например 23example.cdn-provider.com)
  5. Заходим в настройки нашего DNS-провайдера и настраиваем CNAME-запись, которая будет указывать на выданный нам CDN-домен

И вот тут надо остановиться по подробнее и разобраться что это за CNAME запись.

Грубо говоря CNAME позволяет неявно перенаправлять все запросы с домена cdn.mysite.com на домен 23example.cdn-provider.com.

Таким образом когда мы вставляем на наш сайт картинку с URL:

https://cdn.mysite.com/img/img.png

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


Сколько стоит?

Вот приблизительные цифры по самым поплярным CDN-провайдерам.

6Тб трафика

Akami - 400 $, CDN77 - 199 $, Cloudflare - 750$, StackPath - 200$

25Тб трафика

Akami - 1000 $, CDN77 - 385 $, Cloudflare - 2800$, StackPath - 800$

50Тб трафика

Akami - 1700 $, CDN77 - 580 $, Cloudflare - 3000 $, StackPath - 1800$

100Тб трафика

Akami - 2500 $, CDN77 - 990 $, Cloudflare - 3000 $, StackPath - 200$

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

Итог

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

Спасибо за ваше внимание)

Больше контента в моем Telegram-канале https://t.me/dakotovblog