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

Методика тестирования

Для измерений использовался браузер FireFox с установленными плагинами FireBug и NetExport. FireBug на странице Net показывает общее время загрузки страницы сайта и отдельных ее частей. Плагин NetExport позволяет автоматически сохранять эту информацию в файлы в формате JSON для дальнейшего анализа.

Объектом тестирования выступила главная страница сайта bxtemplates.ru. Она загружалась по 100 раз с использованием CDN и без него.

Чтобы не нажимать f5 руками в браузере, в header.php шаблона был добавлен мета-тэг

<meta http-equiv="refresh" content="5" />

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

Для того, чтобы FireFox не кэшировал данные, в about:config были выставлены значения browser.cache.memory.enable:false и browser.cache.disk.enable:false

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

Результаты

Первый график отражает скорость загрузки статических файлов. Вычисляется как
[полное время страницы (onLoad)] — [время генерации и доставки html-текста страницы]

Видно, что CDN действительно ускоряет процесс. Отсюда вывод — чем больше на сайте картинок\скриптов\css-файлов, тем более эффективным будет использование модуля.

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

Последний график — время полной загрузки страницы (onLoad). Очевидно, что при просмотре с моего компьютера модуль неэффективен — в 60% случаев сайт с CDN открывается дольше чем без него.

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

Больше статей и материалов по web-разработке в tg-канале - подписывайтесь!

Подписаться в telegram

10 комментариев “Тестируем технологию CDN от 1с-Битрикс

  1. Роман Петров

    Долго спорил с вами в твиттере и решил написать сюда.

    Не очень понятно, что именно показывают графики и какие именно выводы я должен сделать, прочитав сообщение:
    1. Где стоит ваш сервер? По столом?
    2. Что такое ось Х? Почему в конце графика наблюдается рост показателей?
    3. Почему такая разница при отдаче статики?

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

  2. Алексей Валеев

    Отвечаю.
    1. Сервер — шаред хостинг от hc.ru
    2. Ось Х — это порядковый номер эксперимента. Ось Y — время. Растут графики из-за того, что данные отсортированы. Сортировать можно, потому что нет зависимости между 1м экспериментом с CDN и 1м без него, 2м с CDN и без него, и т.д.
    3. Сервер отдает файлы медленнее чем из CDN.

  3. Алексей

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

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

    Меня лично интересует:
    — это очень поможет интернет-магазинам?
    — это очень поможет сайтам со сложным и возможно тяжёлым контентом (HTML5, много jQuery скриптов, Flash)?
    — это поможет чему угодно, если скорость хостинг не ниже (CPU, RAM, скорость канала)

  4. Алексей Валеев

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

  5. sap

    По моему опыту кажется что без CDN на хорошщем хостинге (timeweb)? работает заметно быстрее. Но для того чтобы не перегружать хостинг, и чтобы он оставался хорошим, на клиенских сайтах лучше включать эту технологию ;)

  6. Николай

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

    Ощущения от использования сабжа спорные, и данное тестирование (спасибо Алексею) тому подтверждение. Пожалуй, только массовое html-кэширование сделает CDN реально эффективным.

  7. Владислав

    алексей, плюньте на hc.ru и переезжайте на нормальный хостинг — никакие CDN не будут нужны. у меня после смены хостера (тоже был хостинг-центр) скорость отдачи страниц увеличилась в 3 раза в среднем.
    еще вопрос — почему ваш сайт не на битриксе, коли он здесь пропагандируется?

  8. Алексей Валеев

    Hc.ru совершенно не подходит для битрикса, с этим не поспоришь. А вообще, по отзывам, и на других площадках CDN совсем не ускоряет сайт.
    А WP используется потому, что это один из лучших инструментов для решения задачи ведения блога. Модулю блогов битрикса еще далеко до этого уровня.

  9. Владислав

    hc.ru, имхо, подходит только для простейших сайтов. сначала у меня там был самописный движок, потом на простом фреймворке, потом на нормальном фреймворке. сейчас после перехода на битрикс решил съехать — даже битрикс оказался быстрее чем фреймворк у hc.ru.
    честно говоря, битриксу до всего далеко. тем не менее, ради спортивного интереса, простой блог я сделал из новостей :)

  10. Сергей

    Судя по комментариям относительно смысла оси X на графиках, результаты данных экспериментов нужно представлять в виде гистограмм, с отложенным средним и среднеквадратичным значениями.
    Желаю удачи!

Добавить комментарий

Ваш адрес email не будет опубликован.