Почему CDN не ускоряет медленные сайты?
к.э.н. Лавлинский Н. Е., технический директор ООО «Метод Лаб»
В этой статье предлагаю снять маркетинговую шелуху с вопроса ускорения сайтов посредством подключения CDN (content delivery network – сеть доставки контента). К сожалению, большинство владельцев сайтов не понимают принципов работы сетевых протоколов, веб-приложений и поэтому подвержены зомбированию со стороны различных недобросовестных компаний, предлагающих решить все проблемы своим CDN.
Что такое CDN?
Для начала нужно разобраться, что такое CDN и зачем была создана эта технология. CDN это прежде всего сеть точек доставки контента. Каждая точка может кешировать данные (которые не изменяются) и отдавать без запроса к исходному веб-серверу (обычно называется origin). Второй сценарий: иерархическая система, когда требуется вещание в реальном времени. Тогда исходный сервер передает на один или несколько узлов в CDN, а они уже распространяют контент по точкам, к которым непосредственно обращаются пользователи. В итоге достигается несколько эффектов:
- суммарная пропускная способность сети отдачи контента легко масштабируется и практически не ограничена, в отличие от отдельного сервера;
- за счет использования географической распределённости можно добиться более стабильной и быстрой связности с конечными потребителями контента;
- происходит разгрузка ресурсов веб-сервера (прежде всего, канала и устройств ввода-вывода) для выполнения полезной работы.
Из описанной выше схемы работы сетей CDN можно выделить два основных сценария применения:
- раздача тяжелого контента (видео, большие файлы) многим пользователям;
- увеличение доступности сайта с географически распределенной аудиторией.
В описанных выше сценариях использование CDN действительно оправдано и может решить проблемы масштабируемости и скорости.
Ситуация на самом деле
А теперь посмотрим на обычные медленные бизнес-сайты, требующие ускорения. Ни один из сценариев использования CDN здесь не проходит. Как правило, тяжелый контент отдается на сторонние сервисы (например, YouTube). Географическая распределённость обычно ограничивается одним федеральным округом в России. При таких расстояниях до клиентов задержки в сети не играют решающей роли (а при использовании HTTP/2 и вообще теряют влияние).
Так почему же операторы CDN уверенно твердят об ускорении сайтов, причем любых? Реальное основание есть, но довольно слабое:
- они действительно могут сократить задержки до клиента (что почти всегда неактуально, если у вас сервер в Москве и аудитория в ЦФО);
- если у вас криво настроенный сервер (нет keep-alive, nginx, gzip, кеширующих заголовков и т. д.), то они это могут компенсировать (а можно и у себя один раз настроить);
- часть огрехов в разработке сайта можно убрать на стороне CDN (склеить файлы, что-то сжать получше) – но эти оптимизации есть далеко не во всех CDN и они не всегда безопасны для сайта.
Но помимо возможных плюсов, есть и очевидные минусы использования CDN:
- дополнительные постоянные расходы (около нескольких тысяч рублей в месяц для небольшого сайта);
- дополнительная точка отказа (система усложняется, нужно тестировать работу сайта с CDN);
- возможное ухудшение скорости доставки (при отсутствии файла в кеше точки CDN требуется сначала передать файл на точку и только потом клиенту – увеличение задержек);
- непредсказуемость затрат на CDN (стоимость сервиса зависит от трафика сайта).
При этом самые острые проблемы, которые снижают скорость загрузки сайтов выглядят следующим образом:
- несоразмерные картинки в слайдерах и обычных иллюстрациях (иногда по несколько мегабайт каждая);
- лишние JS-библиотеки и плагины к ним (иногда даже дублирующие друг друга);
- неправильный порядок подключения JS и CSS на странице;
- большое время генерации HTML-страниц из-за недостаточной мощности сервера;
- неоптимальные настройки СУБД и веб-приложения.
Все эти проблемы решаются профессиональным специалистом раз и навсегда, позволяя сайту грузиться быстрее и не требуя регулярных затрат. А освободившиеся деньги можно потратить на доработку сайта.
Поэтому CDN не ускоряет медленные сайты, они могут ускорить быстрые сайты.
Ускорение сайтов в «Метод Лаб»
Наш подход к ускорению сайтов заключается в исправлении причины низкой производительности и скорости загрузки сайтов, а не подстановка внешних «костылей» для эмуляции скорости. Использование любых технологий имеет свои ограничения, которые мы учитываем.