Оптимизация TTFB (Time to First Byte) 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Оптимизация TTFB (Time to First Byte) 1С-Битрикс
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1165
  • 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
    563
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    743
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Оптимизация TTFB (Time to First Byte) 1С-Битрикс

TTFB — время от отправки HTTP-запроса до получения первого байта ответа. Это чистое серверное время: DNS, TCP-соединение, SSL-хендшейк плюс время генерации страницы. Google PageSpeed считает хорошим TTFB < 200 мс. У стандартного Битрикс-сайта без оптимизации — 800 мс — 3 секунды.

Из чего складывается TTFB в Битрикс

Типичная разбивка на тяжёлом сайте:

Этап Время Что влияет
DNS + TCP + SSL 20–100 мс Хостинг, CDN, геолокация
Инициализация PHP + Битрикс 50–150 мс OPcache, autoload
Загрузка ядра, модулей, пролог 30–100 мс Количество модулей, include в init.php
SQL-запросы к БД 100–2000 мс Индексы, кеш, оптимизация запросов
Выполнение компонентов 50–500 мс Кеш компонентов, сложность шаблонов
PHP-буфер, обфускатор 10–50 мс Настройки вывода

На большинстве проектов 60–80% TTFB — это SQL-запросы. Начинать нужно с них.

OPcache — базовая оптимизация PHP

PHP без OPcache компилирует каждый файл при каждом запросе. Битрикс при полной загрузке include-ит 200–500 PHP-файлов. OPcache кеширует скомпилированный байткод:

[opcache]
opcache.enable = 1
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 20000
opcache.validate_timestamps = 0   ; в продакшене — не проверять изменения файлов
opcache.revalidate_freq = 0
opcache.fast_shutdown = 1
opcache.enable_cli = 0

validate_timestamps = 0 — критично для скорости. При этом OPcache не видит изменения файлов без сброса. После деплоя сбрасывайте кеш: opcache_reset() или cachetool утилитой. Без этой настройки OPcache делает stat() для каждого файла на каждый запрос — сотни syscall-ов.

max_accelerated_files = 20000 — Битрикс с типовым набором модулей имеет 5000–15000 PHP-файлов. Если лимит меньше — часть файлов не кешируется. Проверить: opcache_get_status()['opcache_statistics']['num_cached_scripts'].

Кеш страниц и компонентов

Самый эффективный способ снизить TTFB — не генерировать страницу вообще, а отдать кешированный HTML. Битрикс умеет кешировать на нескольких уровнях:

Кеш компонентов ($cache_time в .parameters.php). Стандартный компонент bitrix:catalog.section кешируется на час. При правильной настройке повторный запрос страницы — это 5–20 SQL-запросов вместо 100–300.

Managed cache / composit. Технология Composite Site в Битрикс делит страницу на кешируемые и динамические части. Кешируемая часть (главная колонка, меню, шапка) отдаётся сразу, динамическая (корзина, счётчик уведомлений) догружается AJAX. При правильной настройке TTFB основного HTML падает до 50–100 мс.

Включение Composite: Настройки → Производительность → Составной сайт. Компоненты помечаются как динамические через CBitrixComponent::setDynamicMode() или через bitrix:catalog.top.menu с параметром DYNAMIC = Y.

HTML-кеш nginx. Самый быстрый вариант — nginx отдаёт статический HTML без запуска PHP. Реализуется через nginx FastCGI cache или Varnish перед Битрикс. Требует правильной инвалидации при обновлении контента.

Оптимизация пролога и init.php

Каждый запрос Битрикс выполняет /bitrix/php_interface/init.php. Если в нём подключаются тяжёлые классы, делаются SQL-запросы или подключаются сторонние библиотеки — это добавляется к каждому запросу.

Проверьте /bitrix/php_interface/init.php:

  • нет ли include файлов, которые нужны только в конкретных контроллерах
  • нет ли инициализации сторонних SDK (1C-интеграция, платёжные системы) при каждом запросе
  • нет ли SQL-запросов в обработчиках событий OnPageStart

Lazy-loading через Loader::includeModule() — модули подключаются только там, где они нужны. Не подключайте в init.php весь список модулей глобально.

База данных: подключение и запросы

Время установки соединения с MySQL — 1–5 мс при локальном соединении. При выносе БД на отдельный сервер — 5–20 мс на TCP-соединение. Persistent connections (MYSQL_PCONNECT) позволяют переиспользовать соединение между запросами в рамках PHP-FPM воркера.

В /bitrix/php_interface/dbconn.php:

$DBPersistent = true;  // включить persistent connections

Persistent connections снижают накладные расходы, но увеличивают количество открытых соединений на сервере MySQL. max_connections в my.cnf должен быть больше числа PHP-FPM воркеров × число виртуальных хостов.

Измерение TTFB по этапам

Инструмент диагностики — панель производительности Битрикс (/bitrix/admin/perfmon_panel.php или через значок в нижнем правом углу). Включите профилирование и откройте страницу. Панель покажет:

  • общее время выполнения
  • время SQL-запросов суммарно и по запросам
  • время выполнения компонентов
  • количество файловых операций кеша

Для внешнего измерения — curl -o /dev/null -s -w "Time to first byte: %{time_starttransfer}s\n" https://yoursite.ru/. Делайте 3–5 измерений: первое может быть с холодным кешем.

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

Задача Срок Снижение TTFB
Настройка OPcache 0.5 дня 100–300 мс
Оптимизация SQL (индексы, кеш) 3–5 дней 200–1500 мс
Настройка кеша компонентов 1–2 дня 100–500 мс
Включение Composite Site 2–3 дня 300–800 мс
Перевод на Redis-кеш 1 день 20–100 мс
Nginx FastCGI cache 2–3 дня 200–600 мс

Реалистичная цель для интернет-магазина на Битрикс при комплексной оптимизации: TTFB < 300 мс для кешированных страниц, < 800 мс для динамических (личный кабинет, оформление заказа).