CDN. Что это и зачем?
Кому будет полезно?
Будет полезно всем, кому в проектах важна скорость загрузки контента у пользователей. А это почти любой сайт или мобильное приложение.
Простыми словами
Любой сайт и любое приложение, которое доставляет онлайн контент рано или поздно сталкивается с проблемой быстрой загрзки.
Пользователь горяч, нетерпелив и не любит когда у него отнимают его драгоценное время. Поэтому мы (разработчики) делаем все чтобы скорость загрузки стремилась к нулю.
CDN это очень полезная технология, которая позволяет нам решить эту задачу.
CDN (Content Delivery Network) - это сеть серверов которые ускоряют доставку контента юзеру.
Например, наше прилоежние (контент) физически располагается на сервере в Германии, а юзер сидит в Австралии.
Расстояние, мягко говоря, приличное и чтобы передать какой-то увесестый файл придется подождать пока он пройдет по всей цепочке в сети.
Это долго и было бы гораздо лучше, если бы копия нашего контента хранилась на сервере где-то прямо в Австралии - ближе в пользователю.
Сервера которые позволяют хранить копию нашего контента поближе к пользователю это и есть CDN.
Использовать CDN можно для доставки практически любого статичного контента:
Копаем чуть-чуть глубже
В общих чертах, вроде бы, все ясно. Но появляется несколько вопросов.
- Как контент попадает в CDN?
- Если контент изменился как его обновить на серверах CDN-провайдера?
- Как подключить CDN?
- Это дорого?
Как контент попадает в CDN?
Базовый принцип работы CDN очень простой. Например мы хотим загрузить картину.
Мы запрашиваем файл картинки у CDN. Если этого файла нет на сервере CDN, то система запрашивает этот файл с нашего сервера, отдаёт его пользователю и сохраняет файл у себя.
В следующий раз при запросе этого же файла, CDN больше не будет обращаться на наш сервер, а будет брать его из своего кэша.
А вдруг мы случайно закинули на наш сервер битую картинку
Если контент изменился как его обновить на серверах CDN-провайдера?
Вариантов немного. Либо сброс кэша кнопкой в кабинете провайдера. Либо HTTP заголовки которые контролируют время жизни CDN-кэша.
Как подключить CDN?
В общем виде работает это так:
- Регистрируемся у CDN-провайдера
- В личном кабинете указываем наши сервера с контентом (origin)
- Делаем все необходимые настройки (что кешируем, на какое время и т.д.)
- CDN-провайдер дает нам домен, который будет нашей входной точкой в сеть CDN (например
23example.cdn-provider.com) - Заходим в настройки нашего DNS-провайдера и настраиваем CNAME-запись, которая будет указывать на выданный нам CDN-домен
И вот тут надо остановиться по подробнее и разобраться что это за CNAME запись.
Грубо говоря CNAME позволяет неявно перенаправлять все запросы с домена cdn.mysite.com на домен 23example.cdn-provider.com.
Таким образом когда мы вставляем на наш сайт картинку с URL:
https://cdn.mysite.com/img/img.png
Мы будем ее грузить уже не с нашего сервера на прямую, а через CDN-провайдера.
Сколько стоит?
Вот приблизительные цифры по самым поплярным CDN-провайдерам.
Akami - 400 $, CDN77 - 199 $, Cloudflare - 750$, StackPath - 200$
Akami - 1000 $, CDN77 - 385 $, Cloudflare - 2800$, StackPath - 800$
Akami - 1700 $, CDN77 - 580 $, Cloudflare - 3000 $, StackPath - 1800$
Akami - 2500 $, CDN77 - 990 $, Cloudflare - 3000 $, StackPath - 200$
Также надо сказать что есть менее популярные провайдеры у которых трафик будет чуть дешевле, но и чуть хуже соответственно.
Итог
CDN - классная, не очень сложная и вполне доступная технология, о который надо вовремя вспоминать)
Больше контента в моем Telegram-канале https://t.me/dakotovblog