Одной из «киллер-фич» 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 явно увеличивает скорость отдачи статики, но практически весь выигрыш нивелируется бОльшим временем генерации страницы на сервере (чему с большой вероятностью причина — низкая производительность виртуального хостинга).