Я твой контент шатал: что такое CDN и почему это так важно. CDN в России: от теории - к практике Поговорим о расширенных настройках

Чтобы посмотреть все ролики на Youtube, придется потратить более 1000 лет, но за время просмотра их станет еще больше (примерно на миллиард). И это всего один пример, почему очень трудно представить реальное количество загрузок в глобальной сети интернет в одну земную секунду.

Каким образом пользователь из Москвы мгновенно загружает ролик, к примеру, с далекого австралийского сайта? Где хранится бесконечная информация, создаваемая человечеством для человечества? Эти вопросы волнуют тех, чей контент растет и нуждается в скорой доставке в любую точку мира.

CDN спешит на помощь

Быструю доставку контента в любую точку мира обеспечивает CDN (Content Delivery Network). Полная расшифровка аббревиатуры — сеть доставки контента. Но эти три слова едва ли нарисуют полную картину, поэтому попробуем простыми словами.

Простыми словами — это система распределенных по всему миру серверов: когда копии сайта находятся в 50 точках одновременно , и пользователи загружают страницу с той, что находится ближе.

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

Лишние секунды загрузки меняют восприятие

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

По данным , при увеличении времени загрузки сайта с 1 до 5 секунд, вероятность отказа возрастает на 90%. Велика вероятность, что не дождавшись, гость уйдет по другим ссылкам. Но при наличии CDN пользователь получит запрашиваемый контент с ближайшего из cерверов и останется на площадке.

Есть и другие плюсы при использовании технологии:

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

Однако, все эти прелести стоят денег. Ряд компаний, предоставляющих услугу, берут за CDN плату. Цены в среднем варьируются от 2,4 до 8 рублей за гигабайт переданной информации — в зависимости от выбранного тарифа и поставщика.

Качество, за которое нужно платить

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

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

По этой причине, считают авторы исследования, доминирование CDN будет более выраженным в богатых странах Северной Америки, Западной Европы и Азиатско-Тихоокеанского региона. По прогнозу большой разрыв между интернетом в богатых и бедных странах произойдет в течение 5 лет: к 2021 году в Северной Америке через CDN будет перетекать примерно 91% всего интернет-трафика, тогда как на Ближнем Востоке и в Африке - всего 31%. Проблема цифрового разрыва может коснуться тех бесплатных сервисов , где требуется быстрая обработка речи, например, известные сервисы видеосвязи.

Такие гиганты, как Facebook, Amazon, Netflix или Google все больше вкладывают средства в развитие собственных CDN для доставки контента своим пользователям. В течение ближайших пяти лет доля интернет-трафика, который распространяется сетями доставки контента, возрастет до 70%, также прогнозируют в Cisco.

«Каждый километр или миля, или расстояние, которое видеоконтент должен преодолевать, ухудшает или снижает уровень качества», - говорит Томас Барнетт, автор отчета в Cisco.

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

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

Когда и где нужна сеть CDN

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

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

Евгений Россинский, директор по технологии в онлайн-кинотеатре ivi

Рынок CDN растет, сегодня это тренд как на Российском, так и на зарубежном рынке. Основными драйверами роста выступают всё те же VOD и OTT: популяризация видеосмотрения в Интернете, рост качества видео и как следствие, рост объема трафика. А прогнозы ещё более оптимистичные: к 2021 году 80% глобального интернет-трафика придется на онлайн - видео и 77 % от видеотрафика будет приходиться на сети CDN, сегодня же этот показатель уже 67%.

Несколько лет назад мы сделали ставку на собственную CDN-систему, без использования аутсорсинговых решений. Год назад мы вышли в СНГ, сейчас - доступны по всему миру. В СНГ и странах, за пределами РФ, мы иногда используем партнерские ресурсы. Заключаем соглашение с локальными интернет - провайдерами о размещении узлов нашей CDN-сети.

Сейчас наш объем трафика в РФ намного превосходит трафик в СНГ и в остальном мире. Но как только возникнет экономическая целесообразность в строительстве своих точек присутствия в других странах, мы обязательно этим займемся. С периодичностью раз в квартал оцениваем эффективность такого решения — не пора ли построить что-либо свое на Украине или в Казахстане. Этот момент еще не наступил. Думаю, через год однозначно такое решение нам предстоит принимать.

У нас сейчас в РФ 30 точек присутствия. Сначала поставили узлы в тех точках, где нам обязательно хотелось бы присутствовать. А потом пошел фидбек от операторов связи. Есть примеры, когда оператор из не самого крупного города с несколькими сотнями тысяч населения просит нас развернуть свой узел, кто-то даже предлагает свое «железо».

Ярослав Городецкий: Итак, меня зовут Ярослав Городецкий. Я представляю компанию CDNvideo. Мой доклад называется «Как мы строим CDN в России».

Что такое CDN?

CDN расшифровывается как Content Delivery Network (сеть доставки контента). Она используется для того, чтобы раздавать контент большому числу пользователей, находящихся в разных городах, в разных странах, на разных континентах, быстро и более качественно, чем если бы контент раздавался из одной точки. Это территориально-распределенная сеть серверов.

Конференция посвящена высоконагруженным приложениям. Поэтому в терминологии трехзвенной архитектуры HighLoad CDN соответствует уровню серверов front-end - серверов, с которых контент раздается конечному пользователю.

Сети доставки контента могут быть частными. У крупных контент-провайдеров (таких, как Google, Yandex, Mail.Ru, Facebook, VKontakte), как правило, есть собственные CDN, которые служат только для распространения контента этих крупных контент-провайдеров.

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

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

Наверное, многие и так это знают, но все-таки повторим основы.

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

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

Как воспользоваться CDN?

Сначала вы выстраиваете взаимодействие с CDN-провайдером. Доставлять через сеть CDN можно видеоконтент, данные, статический веб-контент, любые приложения, дистрибутивы приложений и так далее. Этот контент распространяется по всем серверам CDN и отдается конечным пользователям.

Для распространения контента внутри сетей CDN и для забора контента от контент-провайдера, как правило, используется протокол HTTP. На самом деле, все эти сервера являются кэширующими HTTP-серверами. Для потокового видео используются протоколы RTMP/RTSP и другие подобные протоколы, обеспечивающие потоковую передачу данных (англ. Streaming).

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

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

Как правило, CDN используется для раздачи «тяжелого» контента (видео, аудио, фотографий, flash-анимации, CSS/JavaScript, клиентов игр и так далее).

В одном из сегодняшних докладов говорили о том, что CSS/JavaScript можно ужать на 40-50%. Это и в самом деле актуальная проблема. Для стабильной работы веб-сервисов требуется быстрая отдача CSS/JavaScript конечным пользователям. Можно ужимать, а можно использовать CDN для повышения скорости отдачи CSS/JavaScript конечным пользователям.

Как строить CDN?

Давайте более детально поговорим о том, как можно строить CDN, как мы это делаем и почему мы делаем именно так.

Сетей CDN в мире достаточно много. Тема CDN развивается с 1998-го года, когда появился один из первых высоконагруженных сайтов - CNN. Наверное, это один из первых высоконагруженных сайтов, который не принадлежал технологической компании. На тот момент нагруженные сайты были у Microsoft и у поисковых систем.

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

Тогда появилась компания Akamai, которая решила эту проблему за CNN, расставив серверы по всему миру.

Какими бывают CDN?

Они различаются:

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

Как расставить серверы сети CDN таким образом, чтобы обеспечить наилучшее среднее качество для всех пользователей?

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

Что такое Интернет с точки зрения интернет-провайдеров, а не обывателя? Обычный человек полагает, что Интернет - это "облако". На самом деле, часть Интернета - это граф связанности нескольких интернет-провайдеров (российских и зарубежных). Я взял эти данные с очень хорошего ресурса rolltex.com, где можно для каждого интернет-провайдера получить такую карту связанности.

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

Есть и другой вариант. Провайдеры, как правило, обмениваются между собой трафиком через Internet Exchange. Это точки бесплатного обмена трафиком. Их достаточно много в Европе. В Штатах их мало, потому что там обмен трафиком, в основном, платный. В России точки бесплатного обмена развиваются с переменным успехом. Московский Internet Exchange достаточно большой. Питерский Internet Exchange раз в 10 меньше московского.

Таким образом строит свои сети CDN ряд других провайдеров. Среди них - LimeLight (это основной западный конкурент Akamai) и российский интернет-провайдер NGENIX. Этот подход хорош тем, что вроде бы можно охватить большее количество провайдеров с одного узла. Но есть определенная проблема - такой подход требует достаточно приличных затрат на сетевое оборудование.

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

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

Теперь поговорим о классификации CDN по способам распределения нагрузки. Их несколько.

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

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

Есть еще пара способов. Подстановка URL при генерации HTML-страницы. Есть такой способ, как Anycast, когда ответы посылаются на ближайший сервер. У всех серверов один и тот же IP-адрес. Грубо говоря, какой сервер получил запрос первым, тот и ответит на этот запрос.

Какой из этих способов лучше?

DNS используют почти все. Тем не менее, у него есть одна существенная проблема. Есть пользователи, которые пользуются чужими DNS (например, Google DNS 8888). Для них балансировка нагрузки вообще не будет работать. Они будут перенаправляться на тот сервер, который находится ближе к Google, а не к их интернет-провайдеру. В результате выигрыша от использования CDN они не получат. По нашим данным, местоположение около 10% запросов определяется неправильно.

HTTP-редирект такой проблемы не создает, но зато он предполагает другую проблему. У него увеличивается время ответа, потому что происходит допольнительный HTTP-запрос - соответственно, есть лишняя установка TCP-соединения. Время ответа занимает несколько десятков миллисекунд, в лучшем случае.

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

Другой способ классификации CDN - по тому, как распространяется контент внутри самой сети CDN.

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

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

Последний вариант - одноранговая сеть (англ. peer-to-peer, P2P). Распространение контента в CDN осуществляется по принципу P2P. Серверы загружают контент друг другу, аналогично тому, как это делается в торрентах.

Такой способ использует одна известная академическая CDN (Coral CDN), а также некоторые провайдеры потокового вещания в интернет, те, кто делает возможной видеотрансляцию для большого числа пользователей. Пользователи перенаправляют запросы и тоже участвуют в распространении видеоконтента.

На западе есть компания Octoshape, которая этим занимается. В России примером такой компании можно назвать Lavina.TV.

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

Первый способ - по географии. Самый понятный, интуитивный способ. У нас есть сеть CDN. Например, можно поставить сервер в Новосибирске, и все пользователи из Новосибирска по этой GeoIP-базе направляются на этот новосибирский сервер.

Но, к сожалению, такой подход не работает в большинстве случаев. Многие интернет-провайдеры имеют между собой сложные взаимоотношения, между ними идут так называемые "пиринговые войны". Очень часто бывает так, что провайдеры из одного и того же города "тянут" трафик через другой город (а то и через другую страну) между собой.

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

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

Это может быть база данных RIPE. Она не в реальном времени, но в эту базу данных все провайдеры должны вносить те сети, те маршруты и пиринговые отношения, которые они имеют. Из этой базы данных можно вынести обширные познания о топологии сетей.

Если вы работаете с региональными провайдерами (в России, по крайней мере), как правило, у всех них есть некая база данных локальных адресов, которую они ведут. Это тоже полезная вещь.

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

Как мы строим CDN?

Теперь я расскажу о нашем опыте построения сети CDN. Мы находимся в России, хотя работаем и в СНГ, и за его пределами. Но наша основная цель - построить CDN для русскоязычного интернета. У российского интернета есть ряд особенностей. Они перечислены на слайде, не будем их зачитывать.

Суть в том, что в России много провайдеров, при этом трафик достаточно сильно сконцентрирован в Москве. Провайдеры не любят друг друга и ведут "пиринговые войны". Наша особенность: помимо сетевых параметров, дополнительно надо учитывать стоимость трафика для конечного пользователя. Где-то он до сих пор не бесплатен, безлимитные тарифы все еще есть не везде.

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

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

Это кэширование HTTP-контента:

  • статические файлы;
  • динамический долгоживущий контент.

Потоковое вещание видео/аудио:

  • прямые трансляции;
  • потоковые трансляции видеороликов;
  • перекодирование потоков и файлов (это тоже довольно востребованная услуга, потому что не всем провайдерам хочется самостоятельно этим заниматься).

Также CDN может предлагать услуги по защите контента. Можно ограничить доступ контенту, предоставляя его только тем пользователям, которые авторизованы данным провайдером. Здесь используются одноразовые ссылки на контент, можно делать авторизацию каждого запроса на стороне контент-провайдера. Только для flash-видео можно также подписывать flash-плеер и, соответственно, давать доступ только тем, кто имеет flash-плеер, загруженный с сайта контент-провайдера.

Как правило, в CDN есть интерфейс программирования приложений (API) для управления услугами, которые позволяют очистить кэш для статического контента при списании этого контента. Например, нужно срочно удалить файл с сайта, а если он уже попал в CDN, то, соответственно, со всех CDN-серверов. Также можно посмотреть статус услуги (сколько у того или иного видеопотока просмотров, сколько его просматривали раньше), проверить, не близок ли порог возможности CDN.

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

  • Прежде всего, надо договориться с CDN-провайдером о том, где ему брать контент, который нужно распространять через CDN. Надо сообщить ему, где находится тот самый сервер, где есть этот контент.
  • Получить ссылку для доступа к своему контенту, который потом размещается на своем сайте, в flash-плеере, в виде ссылки на HTML, в виде каких-то ссылок приложений для мобильных устройств или социальных сетей.
  • Можно замаскировать CDN, сделав CNAME-запись в своем домене, который ссылается на CDN.
  • Можно оставить ссылку на размещенный в CDN контент на сайте, в приложении, во flash-плеере и так далее.
  • На этом все. Спасибо за внимание! Жду ваших вопросов.

    Вопросы и ответы

    Вопрос из зала: Вопрос относительно отказоутойчивости. Предположим, что один из серверов CDN по каким-то причинам "умер". Вы маршрутизируете посредством DNS. DNS-запросы кэшируются у пользователей, они никак не могут узнать, что надо "ходить" уже в другое место. Как вы это решаете? Ярослав Городецкий: Если объем кэширования равен нулю, например. Тогда, соответственно, время на кэширование DNS равно нулю. Пользователь не будет кэшировать данные от DNS. Вопрос из зала: Это создает какие-то задержки - небольшие, но лишний запрос каждый раз. Ярослав Городецкий: Да. Но поскольку серверы расположены близко к пользователям, задержка минимальна. Вопрос из зала: Представьте, что у меня очень много контента (миллиард файлов) с каким-то очень длинным "хвостом", на который редко идут запросы. Как обычно раскладывается контент по CDN? Я как владелец контента говорю: «Разложите все мои файлы» - или это делается по запросу от пользователя? Пользователь пришел на сервер, там увидели, что файла нет, сходили ко мне, забрали, отдали пользователю. Ярослав Городецкий: Вообще CDN больше предназначена не для "длинного хвоста", а для популярного контента, на который много раз идет запрос от пользователя. Поэтому по умолчанию используется по запросу. Есть необходимость показать тот или иной контент пользователю - только тогда этот контент забирается с сервера контент-провайдера, и все следующие запросы идут сразу уже с CDN. В принципе, возможен и вариант, когда вся библиотека контента сначала загружается в CDN. Это больше для «тяжелого» контента, если нужно библиотеку фильмов, например, показывать. Фильмы загружаются долго. В стандартном варианте делается взаимодействие по запросам. Вопрос из зала: Большинство хостингов в России предоставляет бесплатный трафик. Почему в российских CDN надо платить за трафик? Можно по тем же самым городам сделать его бесплатным. Ярослав Городецкий: Вы про нас говорите? Вопрос из зала: И про вас тоже. Ярослав Городецкий: Надо за что-то платить. Самый простой честный способ посчитать затраты CDN на то, что этот трафик берется из одного места, доводится по всем серверам и дальше раздается с разных серверов географически распределенных, - это тарифицировать по трафику. Но, в принципе, мы предлагаем и другие варианты. Для распределения потокового видео у нас есть фиксированные тарифы по количеству одновременных подключений. Тогда это бесплатно. Вопрос из зала: Вопрос по поводу того, что построено у нас. Спрошу как человек, которому знакома тема видео. Какова скорость забора информации от клиента. Если я клиент CDN, и у меня есть видеофайл, насколько быстро вы можете его доставить через себя к абонентам? Второй вопрос. Какая сеть на данный момент имеется? Какая география, мощность? Ярослав Городецкий: Первый вопрос. Это во многом зависит от ширины вашего канала. У нас достаточно широкие каналы. Мы делаем в виде трансляций, каких-то мероприятий. Там это проблема. Чтобы показывать видеопоток в хорошем качестве, нам нужно, чтобы у контент-провайдера, который транслирует мероприятие, был достаточно приличный канал в Интернете, и при этом хорошего качества. По географии. У нас сейчас сеть развивается, к концу года будет 7 городов. Сейчас - Москва, Питер, Екатеринбург, Новосибирск, Киев, Западная Европа. Вопрос из зала: Как быстро вы сможете среагировать, если мы скажем, что у нас будет серьезная нагрузка. Вы сможете расширить возможности для наших требований? Ярослав Городецкий: В принципе, мы не лимитируем. Конечно, да, все возможно. Вопрос из зала: Сколько - месяц, два? Ярослав Городецкий: Меньше месяца. Вопрос из зала: Не совсем удобно, что Akamai можно использовать по всему миру, а в России надо идти в вашу сеть. Как можно решить эту проблему? Существует ли возможность интеграции? Ярослав Городецкий: Да, да, существует. Подходите, в кулуарах я вам расскажу об этом.

    CDN (сеть доставки контента) - ваш сайт загружается быстро в любой точке мира!

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


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

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

    2. В поисковых системах ранжирование быстрого сайта будет выше

    Факт, что скорость загрузки сайта влияет на поисковую выдачу. Пользователи не готовы ждать, пока ваш сайт загрузится и просто уйдут дальше. Посетитель, покинувший «медленный» ресурс, автоматически понижает его вес для поисковой системы. Чем больше время - тем больше отказов. Крупные поисковые системы также не отрицают, что напрямую учитывают скорость загрузки страниц в формулах ранжирования.


    3. Скорость сайта влияет на эффективность рекламных кампаний

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

    4. Подключение CDN снизит количество обращений к вашим серверам

    Чем дальше находится ваш клиент от сервера, тем медленнее происходит передача данных и открываются страницы. При загрузке материалов сайта с узлов CDN сервиса, количество обращений к вашим серверам будет ниже, так как контент будет кэшироваться. Для статического контента соотношение числа запросов к самому сайту от серверов CDN к числу запросов от живых посетителей сайта в среднем составляет 1:50.

    Хотите больше информации? Читайте наш .

    От автора: если вы давно работаете в сфере разработки, вы знаете, что главная проблема в интернете – это скорость. Все просто: скорость имеет значение, и чем быстрее, тем лучше. Простой способ повысить производительность – использовать CDN. Мы уже поднимали эту тему несколько раз на сайте CSS-Tricks. Простота в том, что вам не нужно переписывать базу данных и вручную редактировать контент, однако многие из нас не уделяют должного внимания производительности в этой области. Хостинг, серверы и cPanel, боже мой!

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

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

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

    Вы потеряли меня на CDN

    Не повредит, если мы рассмотрим основные понятия: что такое CDN, для чего они нужны. Начнем с этого.

    JavaScript. Быстрый старт

    CDN вытягивает статические файлы с сервера вашего сайта и кэширует их на своих серверах. Когда браузер обращается к вашему сайту, статический контент подгружается через CDN, а не с вашего сайта. Так получается намного быстрее, так как серверы CDN расположены по всему миру. Сам CDN работает по принципу прокси, определяя ближайший к пользователю сервер, что обеспечивает более быструю и удобную доставку контента. Аббревиатура расшифровывается как Content Delivery Network или сеть доставки контента.

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

    К примеру, мы хотим настроить CDN на поддомен. На сайте CSS-Tricks адрес может быть таким cdn.css-tricks.com. Соответственно, все ссылки для файлов будут идти на поддомен.

    Грубо говоря, адреса файлов на вашем сайте:

    http://www.css-tricks.com/image.jpg http://www.css-tricks.com/style.css http://www.css-tricks.com/script.js

    http : //www.css-tricks.com/image.jpg

    http : //www.css-tricks.com/style.css

    http : //www.css-tricks.com/script.js

    … станут такими:

    http://cdn.css-tricks.com/image.jpg http://cdn.css-tricks.com/style.css http://cdn.css-tricks.com/script.js

    http : //cdn.css-tricks.com/image.jpg

    http : //cdn.css-tricks.com/style.css

    http : //cdn.css-tricks.com/script.js

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

    Погодите, два сервера на одном сайте?

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

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

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

    Как установить CDN на пользовательское приложение

    Сервисов много, но чаще других используются Amazon AWS и MaxCDN . Сегодня мы рассмотрим сервис MaxCDN.

    Шаг 1: выберите CDN и зарегистрируйте ваш сайт

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

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

    Шаг 2: создайте URL на вашу CDN

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

    Как и для других поддоменов, необходимо будет указать cname-запись в настройках DNS вашего хоста.

    Шаг 3: направьте ваши файлы на CDN

    Рассмотрим, как можно создать переменную для CDN адреса, и как ее можно использовать для программной вставки перед URL статических ресурсов. Для чего это нужно: (1) так сложнее допустить ошибки в разметке и (2) так легче работать с URL, которые нам нужно будет менять.

    Для этого нам понадобится глобальная переменная для CDN, которую мы будем присоединять слева к URL статических ресурсов. Переменную будем создавать как в PHP, так и в JS, чтобы потом было легче работать. Также эта переменная поможет нам легко выключить CDN, если мы этого захотим. Нужно будет просто заменить значение на /, чтобы вернуть адрес на наш сервер.

    Обратите внимание, что следующие примеры – это лишь примеры, не стоит использовать их. Реальные примеры использования могут отличаться.

    Hello World! /* Let’s define a javascript global for using the CDN inside scripts */ var cdnURL = ""; js/main.js">