Оптимизация Core Web Vitals для 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Оптимизация Core Web Vitals для 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1173
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    745
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Оптимизация Core Web Vitals для 1С-Битрикс

Core Web Vitals — три метрики Google: LCP (скорость загрузки главного контента), CLS (стабильность макета), FID/INP (отзывчивость на ввод). С 2021 года они входят в поисковое ранжирование. Для Битрикс-сайтов типичная картина: LCP 4–8 секунд вместо порогового 2.5 с, CLS 0.2–0.5 вместо 0.1, FID/INP выше 200 мс.

Диагностика

Начните с Chrome DevTools → Lighthouse → Performance. Это синтетика, но хорошо показывает узкие места. PageSpeed Insights (pagespeed.web.dev) даёт данные по реальным пользователям из CrUX (Chrome User Experience Report) — это важнее синтетики для оценки реального влияния на поиск.

Для Битрикс-сайтов основные источники проблем:

  • LCP: медленный TTFB + большие изображения в главном баннере
  • CLS: изображения без width/height, шрифты без font-display, динамические блоки (корзина, баннеры)
  • FID/INP: тяжёлый JavaScript, блокирующие скрипты в <head>

LCP: критический путь рендеринга

LCP-элемент в Битрикс-магазине — обычно главный баннер (слайдер) или первое изображение в каталоге. Проблема: изображение подгружается через JS после рендеринга страницы.

Решение — preload для LCP-изображения:

<link rel="preload" as="image" href="/upload/banners/main.webp"
      imagesizes="100vw" fetchpriority="high">

Добавляется в <head> шаблона. В Битрикс — в header.php главного шаблона или через AddHeadString() в компоненте.

Слайдеры — главный враг LCP. Библиотеки типа Swiper.js загружают JS (100–300 КБ), который откладывает показ первого слайда. Оптимизация: первый слайд рендерить в статичном HTML, JS-инициализацию откладывать через defer или requestIdleCallback.

CLS: смещения макета

CLS ненулевой в Битрикс из-за:

Изображения без размеров. Стандартные компоненты Битрикс часто выводят <img src="..." alt="..."> без width и height. Браузер не знает размер до загрузки и перерисовывает макет. Решение — добавить размеры в шаблон компонента:

// В template.php компонента catalog.element
$width = $arItem['PREVIEW_PICTURE']['WIDTH'] ?? 300;
$height = $arItem['PREVIEW_PICTURE']['HEIGHT'] ?? 300;
echo '<img src="' . $arItem['PREVIEW_PICTURE']['SRC'] . '" '
   . 'width="' . $width . '" height="' . $height . '" '
   . 'loading="lazy" decoding="async" alt="' . htmlspecialchars($arItem['NAME']) . '">';

Корзина и счётчики. Блок «В корзине: N товаров» или значок корзины в шапке — загружаются AJAX после рендеринга и смещают контент. Резервируйте место через CSS: min-width, min-height для блоков с динамическими данными.

Google Fonts и сторонние шрифты. Без font-display: swap браузер прячет текст до загрузки шрифта (FOIT), затем перерисовывает. Добавьте в CSS:

@font-face {
    font-family: 'CustomFont';
    src: url('/fonts/custom.woff2') format('woff2');
    font-display: swap;
}

JavaScript: блокировка рендеринга и INP

Типичная проблема Битрикс: в <head> шаблона подключаются 10–20 JS-файлов через CJSCore::Init(). Браузер останавливает парсинг HTML при каждом синхронном <script>.

Переход на defer:

<!-- Было (блокирует рендеринг): -->
<script src="/bitrix/js/main/core.js"></script>

<!-- Стало: -->
<script src="/bitrix/js/main/core.js" defer></script>

В Битрикс управление скриптами через \Bitrix\Main\Page\Asset. Переключите вывод JS в footer через Настройки → Главный модуль → Производительность → Переносить скрипты в конец страницы.

INP (Interaction to Next Paint) — заменяет FID с марта 2024. Мерит задержку на все взаимодействия, не только первое. Основные виновники: тяжёлые обработчики событий, синхронные операции в click-хендлерах. Диагностика через DevTools → Performance → INP.

Изображения: WebP и lazy loading

Битрикс умеет конвертировать изображения в WebP через модуль resize_image. Настройка в /bitrix/.settings.php:

'resize_image' => [
    'value' => [
        'webp' => true,
        'webp_quality' => 80,
    ],
],

После включения функция CFile::ResizeImageGet() возвращает WebP-версию для поддерживающих браузеров. Для старых браузеров — автоматический fallback на JPEG/PNG.

Lazy loading для изображений вне viewport:

<img src="..." loading="lazy" decoding="async" width="300" height="200">

LCP-изображение не должно быть loading="lazy" — это задержит его загрузку. Остальные изображения — можно и нужно.

CSS: критический путь

Битрикс загружает CSS через \Bitrix\Main\Page\Asset::addCss(). Весь CSS выводится в <head>, блокируя рендеринг. Для ускорения первого отображения:

  1. Выделите критический CSS (стили для visible viewport) и встройте в <style> в <head>
  2. Остальной CSS загружайте асинхронно: <link rel="preload" as="style" onload="this.rel='stylesheet'">

Инструменты для определения критического CSS: critical (npm), PurgeCSS для удаления неиспользуемых стилей.

Сроки оптимизации

Задача Срок Влияние
Диагностика: PageSpeed + DevTools анализ 1 день
Preload LCP-изображения, lazy loading остальных 1–2 дня LCP −1–2 с
Добавление width/height к изображениям 1–3 дня CLS → 0
Перенос JS в defer/footer 1–2 дня FID/INP −50–200 мс
WebP конвертация + оптимизация изображений 1–2 дня LCP −0.5–1.5 с
Критический CSS 2–3 дня LCP −0.5–1 с
Оптимизация TTFB (SQL, кеш) 3–10 дней LCP −1–4 с

Полная оптимизация Core Web Vitals для Битрикс-магазина с нуля — 3–5 недель работы. Первые результаты заметны через неделю.