Разработка headless-архитектуры на 1С-Битрикс

Когда бизнес растёт, стандартный Битрикс с генерацией HTML перестаёт справляться: каждый новый канал продаж требует переписывания шаблонов, а скорость сайта падает. Мы разрабатываем headless-архитектуру, превращая Битрикс в чистую CMS с REST API, и отделяем бэкенд от фронтенда. Наша команда реализует проект под ключ — от аудита до внедрения и поддержки, обеспечивая стабильную работу и лёгкое масштабирование под любые задачи.

Разработка headless-архитектуры на 1С-Битрикс

Архитектура проектаСредний~1-2 недели
Часто задаваемые вопросы

Разработка headless-архитектуры на 1С-Битрикс

Представьте: интернет-магазин на Битриксе с каталогом 50 000 товаров. Сайт работает, но клиенты просят мобильное приложение, а маркетологи — интеграцию с маркетплейсами. Стандартные компоненты генерируют HTML, который бесполезен для JSON-API. Каждый новый канал требует переписывания шаблонов, а производительность падает. Мы решаем это кардинально — внедряем headless-архитектуру, где Битрикс становится чистой headless CMS, отдающей данные через REST API.

Headless разделяет бэкенд (инфоблоки, торговый каталог, CRM) и независимый фронтенд. Вы получаете мультиканальность: один источник данных для веба, мобильных приложений, PWA и голосовых ассистентов. И никакой привязки к шаблонам Битрикса. Такой подход снижает затраты на поддержку — по нашим оценкам, экономия на разработке фронтенда составляет до 30%.

Почему headless выгоднее монолита?

Критерий Монолитный Битрикс Headless-архитектура
Производительность Генерация HTML на каждый запрос, медленно JSON-ответы с кэшированием, быстро
Гибкость фронтенда Привязан к шаблонам Битрикса Любой фреймворк (React, Vue, Next.js)
Мультиканальность Только веб Веб, мобильные приложения, API
Сложность разработки Ниже для одного сайта Выше, но масштабируется

Headless-архитектура на Битриксе обрабатывает запросы в 3 раза быстрее, чем монолит, при одинаковой нагрузке. Независимый фронтенд позволяет обновлять интерфейс без пересборки Битрикса.

Как мы строим headless-архитектуру на Битриксе

REST API слой

Битрикс не имеет встроенного REST API уровня Next.js, поэтому мы строим его двумя способами. Рекомендуемый — роутер через bitrix/routing (версия 20.0 и выше), согласно официальной документации 1С-Битрикс:

// local/routes/api.php
use Bitrix\Main\Routing\RoutingConfigurator;

return function(RoutingConfigurator $routes) {
    $routes->prefix('api/v1')->group(function(RoutingConfigurator $routes) {
        $routes->get('/catalog', [CatalogController::class, 'index']);
        $routes->get('/catalog/{id}', [CatalogController::class, 'show']);
        $routes->post('/cart/add', [CartController::class, 'add']);
        $routes->post('/order', [OrderController::class, 'create']);
    });
};

Контроллеры наследуются от \Bitrix\Main\Engine\Controller и возвращают массивы, которые Битрикс автоматически сериализует в JSON:

// local/controllers/CatalogController.php
class CatalogController extends \Bitrix\Main\Engine\Controller
{
    public function indexAction(int $page = 1, int $limit = 20): array
    {
        $items = \Bitrix\Iblock\Elements\ElementCatalogTable::getList([
            'filter' => ['ACTIVE' => 'Y', 'IBLOCK_ID' => CATALOG_IBLOCK_ID],
            'limit' => $limit,
            'offset' => ($page - 1) * $limit,
        ]);

        return ['items' => $items->fetchAll(), 'page' => $page];
    }
}

Для каталога одного из интернет-магазинов мы реализовали 15 endpoint'ов: фильтрация, сортировка, цены со скидками, остатки по складам. Время ответа сократилось с 1.2 с до 130 мс после включения кэширования.

Аутентификация и сессии

Headless ломает стандартную сессионную авторизацию. Используем JWT-токены: пользователь авторизуется через API, получает токен и передаёт его в заголовке Authorization. Битрикс валидирует токен в middleware. Альтернатива — Cookie + CORS, но это сложнее в безопасности (требуется CSRF-защита). Мы рекомендуем JWT: он проще масштабируется и не требует привязки к домену.

Как настроить кэширование API?

Без кэширования headless-Битрикс медленный — каждый запрос к каталогу строит выборку из БД. Многоуровневое кэширование (Redis + nginx) даёт прирост в 10 раз:

public function indexAction(): array
{
    $cacheKey = 'catalog_page_' . $this->getCurrentPage();
    $cache = Cache::createInstance();
    if ($cache->initCache(3600, $cacheKey, '/catalog/')) {
        return $cache->getVars()['data'];
    }
    $data = $this->buildCatalogData();
    $cache->startDataCache();
    $cache->endDataCache(['data' => $data]);
    return $data;
}

Кэш инвалидируется при изменении данных инфоблока через BXClearCache(true, '/catalog/') в обработчике OnAfterIBlockElementUpdate.

CORS и деплой

Разделяем домены: api.yoursite.ru (Битрикс) и yoursite.ru (фронтенд на Next.js). Настройка CORS в nginx:

location /api/ {
    add_header 'Access-Control-Allow-Origin' 'https://yoursite.ru';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type';
    add_header 'Access-Control-Allow-Credentials' 'true';
    if ($request_method = 'OPTIONS') {
        return 204;
    }
    fastcgi_pass php-fpm;
}

Типичные подводные камни headless-архитектуры

Проблема Решение
Инвалидация кэша при изменении товара Автоматический сброс через событие OnAfterIBlockElementUpdate
Корзина без сессий UUID корзины в JWT или cookie
Сложность отладки Полное логирование, Sentry, дашборд ошибок

Инвалидация кэша

При изменении товара нужно сбросить кэш всех страниц каталога. Мы автоматизируем это через события Битрикса: при OnAfterIBlockElementUpdate очищаем тегированный кэш папки '/catalog/'.

Обработка корзины и заказов

Корзина в headless требует передачи идентификатора сессии в каждом запросе. Используем UUID корзины, привязанный к гостю через JWT или cookie.

Сложность отладки

Без HTML-шаблонов сложнее локализовать ошибки. Наш чек-лист включает: логирование всех API-запросов, мониторинг времени ответа, дашборд ошибок (Sentry).

Процесс работы и сроки

  1. Аудит текущего сайта: инфоблоки, интеграции, нагрузка — 1-2 дня.
  2. Проектирование API: спецификация endpoint'ов, схемы данных — 2-3 дня.
  3. Разработка API и кэширования: реализация контроллеров, middleware, тесты — от 1 до 3 недель.
  4. Настройка инфраструктуры: CORS, nginx, Redis, деплой — 2-3 дня.
  5. Интеграция с фронтендом: совместное тестирование с вашей командой — 1 неделя.

Ориентировочные сроки: от 2 до 6 недель. Стоимость рассчитывается индивидуально после аудита.

Что входит в работу

  • Полная документация API (OpenAPI/Swagger).
  • Исходный код контроллеров, middleware, конфигураций.
  • Настройка кэширования и CORS на вашем сервере.
  • Инструкция по развёртыванию и обновлению.
  • Обучение ваших разработчиков (2 часа онлайн).
  • 2 недели поддержки после запуска.

Почему это выгодно?

Наша команда имеет 10+ лет опыта с Битриксом и 5 лет на рынке. Мы реализовали headless-архитектуру для 50+ проектов, включая каталоги с 200 000 товаров и нагрузкой 10 000 запросов в минуту. Экономия на поддержке и разработке новых каналов достигает 40%. Гарантируем стабильную работу API и полную документацию.

Закажите аудит вашего проекта — мы оценим сроки и стоимость за один день. Свяжитесь с нами для консультации.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1543
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060
  • Разработка виджета онлайн-записи на прием для медицинского центра
    Разработка виджета онлайн-записи на прием для медицинского центра
    837
  • Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    928
  • Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    865
  • Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1223