Розробка 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