Что первое приходит вам в голову, когда вы слышите аббревиатуру CDN? Наверняка, «тяжелый контент», «много видео», «терабайты данных», «миллионы хитов в день».
Не так уж много в Рунете проектов, которые характеризуются подобными словами. Олег Бунин, организатор конференции HighLoad++ (мы доверяем ему в вопросах нагрузок :)), не так давно дал такую оценку: CDN в России нужен и при этом экономически оправдан нескольким десяткам сайтов в России.
А что же сайты поменьше (которых — на самом деле — подавляющее большинство: интернет-магазины, блоги, корпоративные сайты и т.д.)? Нужен ли им CDN? И если нужен, то почему же нет ажиотажного спроса на эту услугу? И можно ли совершить небольшую революцию в вебе одним модулем в CMS?
Ответы на эти вопросы — под катом…
Начнем с вопроса…
Почему обычные сайты не подключают CDN?
Если коротко, то это дорого и сложно.
Например, в компании CDNvideo (одни из немногих российских CDN вообще, которые при этом еще и имеют на сайте понятный прайс-лист на услуги) тарифы начинаются от 3000 руб. в месяц с траффиком от 1 Тб.
Для владельца сайта, выбирающего между хостингами, например, за 300 и 500 руб. — дороговато.
Само подключение, вроде бы, не должно вызвать сложностей (настроить DNS, заменить локальные ссылки на новые), но дьявол, как известно, в мелочах. Как не забыть заменить все ссылки (они могут генерироваться динамически приложением, быть жестко прописаны на страницах, могут указываться в файлах стилей (css) и скриптов (js))? Как сохранить удобство разработки и отладки, работая на девелоперских серверах с локальными копиями? Как обновлять кэш CDN при обновлении файлов? В общем, все не слишком однозначно…
Если все дорого и сложно, то…
Нужен ли CDN обычному сайту?
На обычном сайте нет тяжелого контента, который буквально сам «просится» в CDN. Даже самые прогрессивные интернет-магазины, размещающие на сайте, например, видео-отзывы от клиентов, скорее всего просто ставят ссылки на YouTube, а не хранят все у себя.
Тем не менее, «подвинуть» поближе к посетителю можно весьма многое: все картинки, файлы стилей (css), javascript (js) и т.п. — по сути, практически весь статический контент можно вынести в CDN. А это в среднем до 80% объема траффика.
Помимо ускорения собственно сетью CDN за счет раздачи контента с ближайших к посетителям серверов, сайт, включивший CDN, получает дополнительное ускорение на клиентской стороне (во время рендеринга страницы браузером) за счет распределения запросов по разным доменам.
Все современные браузеры имеют лимит на количество одновременных соединений к одному домену (обычно — не более 6).
По данным www.browserscope.org/?category=network
Таким образом, даже если сервер может отдавать страницы с максимальной скоростью, а скорость клиентского подключения достаточно высока, все равно загрузка всех элементов страницы (картинок, скриптов, файлов стилей) будет осуществляться максимум в 6 потоков.
При подключении CDN локальные ссылки заменяются на разные домены, и уже лишь каждый отдельный домен имеет ограничение на число соединений. Их же реальное максимальное число становится в несколько раз больше (по числу доменов, с которых осуществляется загрузка файлов).
Выигрыш в скорости — секунды. А какая от этого практическая польза? Например, для интернет-магазина.
Самый главный плюс в приросте производительности…
1. На быстром сайте выше конверсия и больше просмотров страниц.
Чем дольше загружается страница сайта, тем больше вероятность того, что самые нетерпеливые посетители не дождутся ее загрузки, уйдут с сайта и больше на него не вернутся.
Есть разные исследования, в которых предпринимаются попытки посчитать таких потенциальных клиентов, которых «недополучает» сайт. Например, инфографика от 5coins говорит о том, что 25% посетителей сайта покидают страницу, загрузка которой занимает более 4 секунд:
Специалисты компании GoMez, проанализировав 150 миллионов хитов на 150 сайтах, получили такие цифры: замедление загрузки страницы на 1 секунду снижает конверсию на 7%, а количество просмотров — на 11%.
Все эти исследования, конечно, не бесспорны, вызывают вопросы и методики исследования, и полученные цифры. Но главный вывод — «быстрее сайт — больше просмотров» — кажется абсолютно справедливым.
2. В поисковых системах позиции быстрого сайта выше.
Поисковые алгоритмы и формулы ранжирования результатов каждая поисковая система держит в секрете. Однако абсолютно очевидно то, что поисковые роботы, индексирующие сайты в интернете, не дождавшись загрузки страницы, не будут учитывать ее в общем поисковом индексе. Кроме того, все большее значение на результаты поиска оказывают поведенческие факторы. А это значит, что посетитель, ушедший с «медленной» страницы, автоматически понизит ее вес для поисковой системы. Ну и наконец, представители практически всех популярных поисковых систем так или иначе говорят о том, что напрямую учитывают скорость загрузки страниц в формулах ранжирования.
3. Медленный сайт приносит прямые финансовые потери во время рекламных кампаний.
Вы хотите активно продвигать свой проект. Заказываете для него контекстную, баннерную рекламу. Каждый клик стоит вполне определенных денег. Если посетитель вашего сайта пришел к вам по рекламному объявлению, но не дождался загрузки страницы, то за его клик вы просто заплатили впустую.
4. Подключение CDN снижает нагрузку на основные серверы сайта.
Так как весь статический контент загружается посетителями вашего сайта не напрямую с ваших серверов, а с узлов CDN, которые умеют очень эффективно кэшировать контент, снижается количество обращений непосредственно к вашим серверам. В среднем для статического контента соотношение числа запросов к самому сайту от серверов CDN к числу запросов от живых посетителей сайта составляет 1:50.
Ну а теперь — о волшебной кнопке для 70 000 сайтов...
70 000 — именно столько сайтов работает на платформе «1С-Битрикс: Управление сайтом».
Неделю назад анонсирован выпуск новой версии 12.0, которая станет доступна для партнеров и клиентов в начале ноября.
Одна из ключевых новинок новой версии — интеграция платформы с CDN, доступна уже сейчас.
С точки зрения клиента все выглядит максимально просто: сначала нужно через стандартную систему обновлений (да, если у вас активна коммерческая лицензия) установить новый модуль «Облачные сервисы Битрикс», а затем в административной панели сайта в разделе «Настройки» — «Облачные сервисы Битрикс» — «Ускорение сайта (CDN)» отметить галочку «Включить ускорение сайта» и сохраните изменения.
Собственно все: после этого ссылки на статические файлы сайта (картинки, файлы стилей css, скрипты js) будут заменены — вместо локальных URL'ов будут использоваться служебные имена серверов сети CDN. При этом не потребуется вносить никакие изменения в DNS и не нужно заботиться о сбросе кэша CDN при обновлении файлов.
Непосредственно для раздачи контента в дальнейшем используется сеть российского провайдера CDN — CDNvideo, в партнерстве с которым реализована эта услуга.
Сколько стоит?
Нисколько. Ноль.
Модуль «Ускорение сайта (CDN)» является бесплатной дополнительной опцией для любой активной коммерческой лицензии на «1С-Битрикс: Управление сайтом». Никаких дополнительных платежей помимо стоимости самой лицензии или ее продления.
Для каждой отдельной лицензии определены ежемесячные лимиты траффика, который может быть передан через узлы CDN конечным пользователям:
А теперь — подробности: как это все устроено внутри.
Схема работы CDN при подключении одного сайта выглядит примерно так:
Каждое обращение любого посетителя сайта к статическому контенту направляется на ближайший к нему узел CDN. При первом обращении нужные файлы загружаются с исходного сайта или специально для этого выделенного узла — origin'а, а при последующих обращениях они будут отдаваться из кеша сервера CDN. Размещение контента на многих серверах CDN и отдача его посетителям из ближайшей к нему точки сокращает сетевой маршрут передачи данных и делает загрузку сайта быстрее с точки зрения пользователя.
Все сети CDN работают по похожим принципам, и источник контента — origin — должен быть один. Как его организовать сразу для многих сайтов?
Мы организовали кусочек собственной облачной инфраструктуры (отказоустойчивой и масштабируемой):
Наше маленькое «облачко» по сути является таким ориджином для сети CDN, проксируя через себя траффик подключенных клиентов и решая несколько важных задач:
- В нашем облаке мы определяем, может ли тот или иной сайт использовать наш CDN (проверяем активность лицензии, квоты на траффик и т.п.)
- Определяем соответствие запросов тому или иному домену.
- Распределяем запросы к картинками, css, js по разным доменам (помним про распараллеливание, о котором говорили выше).
- Аккуратно управляем запросами, если происходит отключение (по неактивности лицензии или превышению траффика) — меняем ссылки на редиректы и дожидаемся, пока отключится замена ссылок на самом сайте. То есть, ни при каком варианте сайт не «ломается».
- Управляем HTTP заголовками для обеспечения максимально эффективного кэширования.
Сам модуль «Ускорение сайта (CDN)», работающий непосредственно на клиентском сайте делает следующие вещи:
- Управляет заменой ссылок в контенте.
- К каждой ссылке добавляет модификатор в QUERY STRING вида "/image.gif?1339164408" с датой модификации файла. Если файл изменяется, меняется модификатор, и для кэша CDN по сути появляется новый объет. Таким образом мы решаем проблему инвалидации (сброса) кэша при изменении файлов с теми же именами.
Небольшой итог.
Чуть больше недели назад модуль «Ускорение сайта (CDN)» стал доступен разработчикам — партнерам «1С-Битрикс». Два дня назад мы открыли публичный доступ к нему всем клиентам.
За это время подключилось около 600 сайтов. В основном — интернет-магазины. А также личные блоги, корпоративные сайты, несколько крупных тематических порталов.
Если ваш сайт работает на «1С-Битрикс: Управление сайтом» — подключите к нему CDN в пару кликов, порадуйте себя и своих посетителей скоростью работы. :)
Автор: adamant