Почему preload критичен для 1С-Битрикс?
Представьте: клиент заходит на ваш интернет-магазин на Битрикс, а страница грузится 5 секунд. Критическая цепочка запросов блокирует рендеринг — каждый HTML, CSS, шрифт, скрипт загружается последовательно. Браузер загружает HTML, парсит его, находит <link rel="stylesheet"> на 5-й строке, идёт за CSS, ждёт, парсит CSS, находит шрифты в @font-face, идёт за шрифтами — это критическая цепочка запросов, которая блокирует рендеринг. Мы решаем эту проблему с помощью preload, prefetch и critical CSS. Наш опыт — более 20 проектов, где удалось сократить время до первого рендера (FCP) на 30–40% и LCP на 25%. Согласно Resource Hints specification, preload позволяет сообщить браузеру о нужных ресурсах заранее, до того, как парсер их обнаружит. Prefetch загружает ресурсы, которые понадобятся на следующей странице. Preload лучше обычной загрузки в 2 раза для FCP.
Сравнение методов предзагрузки
| Метод | Приоритет | Использование | Пример |
|---|---|---|---|
| preload | Высокий | Критические ресурсы текущей страницы | CSS, шрифты |
| prefetch | Низкий | Ресурсы следующей страницы | JS следующего раздела каталога |
| preconnect | Средний | Установка TCP и TLS соединения | CDN, Яндекс.Метрика |
Как ускорить переходы с помощью prefetch?
Если пользователь на главной странице, высока вероятность перехода в каталог. Prefetch основного JS каталога и HTML-страницы /catalog/ кладёт её в кеш браузера — переход будет мгновенным. Но это работает только если страница имеет правильные заголовки кеширования.
| Типичные ресурсы для preload | Рекомендация |
|---|---|
| CSS основного шаблона | Всегда preload |
| Шрифты (woff2) | Preload с crossorigin |
| Core JS (jquery, core.js) | Preload при необходимости |
Как добавить preload в шаблон Битрикс: код и пример
Шаблон сайта в Битрикс — /bitrix/templates/[template_name]/header.php. Добавить в <head> до основных тегов:
<?php
// Получаем хеш-версию файла для cache busting
$cssVersion = filemtime($_SERVER['DOCUMENT_ROOT'] . '/bitrix/templates/.default/styles.css');
$jsVersion = filemtime($_SERVER['DOCUMENT_ROOT'] . '/bitrix/js/main/core/core.js');
?>
<head>
<meta charset="utf-8">
<!-- Preload критического CSS (рендеринг блокируется без него) -->
<link rel="preload" href="/bitrix/templates/.default/styles.css?v=<?=$cssVersion?>"
as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript>
<link rel="stylesheet" href="/bitrix/templates/.default/styles.css?v=<?=$cssVersion?>">
</noscript>
<!-- Preload шрифта (as="font" обязателен, иначе приоритет неправильный) -->
<link rel="preload" href="/bitrix/templates/.default/fonts/roboto.woff2"
as="font" type="font/woff2" crossorigin>
<!-- Preconnect к внешним ресурсам -->
<link rel="preconnect" href="https://mc.yandex.ru">
<link rel="preconnect" href="https://www.googletagmanager.com">
<!-- DNS-prefetch как fallback для старых браузеров -->
<link rel="dns-prefetch" href="//mc.yandex.ru">
</head>
Программный preload через API Битрикс
Битрикс предоставляет методы для управления заголовками Link через класс \Bitrix\Main\Page\Asset:
// В компоненте или шаблоне
$asset = \Bitrix\Main\Page\Asset::getInstance();
// Preload JS-файла
$asset->addJs('/bitrix/js/ui/ui.js', [
'rel' => 'preload',
'as' => 'script'
]);
// Preload CSS
$asset->addCss('/bitrix/templates/.default/critical.css', [
'rel' => 'preload'
]);
Через HTTP-заголовок из обработчика события OnPageStart:
AddEventHandler('main', 'OnPageStart', function() {
header('Link: </bitrix/templates/.default/styles.css>; rel=preload; as=style', false);
header('Link: </bitrix/templates/.default/fonts/roboto.woff2>; rel=preload; as=font; crossorigin', false);
});
Critical CSS для Битрикс: почему это даёт 40% ускорения?
Самый значительный прирост даёт inline critical CSS — стили, необходимые для рендеринга видимой части страницы, встроенные прямо в HTML. Это устраняет блокирующий CSS-запрос полностью. В одном проекте мы сократили LCP с 3.2с до 1.8с только за счёт critical CSS. Инструмент для извлечения critical CSS:
npm install -g critical
critical --base /var/www/bitrix/public_html \
--src index.html \
--css bitrix/templates/.default/styles.css \
--width 1300 --height 900 \
--inline --extract
Полученный critical CSS вставить в шаблон Битрикс в тег <style> в <head>, основной CSS загружать асинхронно через preload с onload как показано выше. Подробнее о Critical CSS.
Процесс работы: от аудита до мониторинга
- Анализ критической цепочки — собираем водопад запросов через Chrome DevTools, определяем блокирующие ресурсы. Обычно выявляем 5–8 кандидатов.
- Отбор ресурсов для preload — выбираем 3-5 критических файлов (CSS, шрифты, core JS). Например, на одном проекте с каталогом на 50 000 товаров мы preloadили основной CSS и шрифты, что сократило FCP с 2.8с до 1.7с.
- Реализация — добавляем теги
<link>вheader.phpс хеш-версиями или используем Asset API. Для HTTP-заголовков подключаем обработчикOnPageStart. - Prefetch для следующего шага — на главной предзагружаем JS каталога, на странице товара — JS корзины. Это даёт прирост скорости переходов до 200 мс.
- Critical CSS — извлекаем inline-стили для видимой части, основной CSS загружаем асинхронно. Инструмент
criticalгенерирует CSS под разрешение 1300x900. - Тестирование — проверяем в Lighthouse, WebPageTest, смотрим метрики FCP и LCP. Добиваемся score 95+.
- Деплой и мониторинг — выкатываем, отслеживаем реальную производительность через Web Vitals.
Типовые ошибки и наша гарантия
На основе нашего опыта (5+ лет с Битрикс, 20+ проектов) мы гарантируем отсутствие регрессий: каждый шаг документируем, делаем бэкапы. Основные ошибки, которых мы избегаем:
- Preload без
as— браузер не знает тип ресурса, загружает с неправильным приоритетом и кеширует отдельно. Ресурс загружается дважды: один раз через preload, второй — когда парсер находит тег<script>или<link>. - Preload шрифтов без
crossorigin— CORS-запрос к тому же домену требуетcrossoriginдля шрифтов. Без него браузер загружает шрифт дважды. - Слишком много preload — приоритет у всего равный = приоритет ни у чего. Максимум 3–5 preload на страницу для действительно критических ресурсов.
Что входит в настройку предзагрузки
При заказе услуги вы получаете:
- Аудит текущей критической цепочки запросов с детальным отчётом.
- Настройку preload для CSS, шрифтов и JS с учётом специфики вашего каталога.
- Prefetch для страниц и ресурсов следующего шага.
- Внедрение critical CSS с автоматической генерацией.
- Тестирование производительности (Lighthouse, WebPageTest) — достижение FCP < 1.5с и LCP < 2.5с.
- Документацию по внедрённым изменениям.
- Гарантию обратной совместимости с обновлениями Битрикс.
Сроки — от 1 до 3 дней. Стоимость рассчитывается индивидуально, но экономия от ускорения может достигать сотен тысяч рублей в месяц за счёт роста конверсии и снижения отказов. По нашим расчётам, для проекта с посещаемостью 10 000 уникальных посетителей в день ускорение на 30% увеличивает конверсию на 1-2%, что даёт дополнительную выручку от 50 000 до 150 000 руб в месяц. Свяжитесь с нами — получите консультацию и поможем ускорить ваш Битрикс. Закажите аудит производительности уже сегодня.







