Послуги з оптимізації продуктивності 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 30 з 62 послугУсі 1626 послуг
Налаштування CDN для 1С-Бітрікс
Проста
~1 робочий день
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Оптимізація продуктивності сайтів на 1С-Бітрікс

b_iblock_element_property — таблиця, через яку гальмує 80% проєктів на Бітрікс. EAV-структура: один рядок на кожне значення кожної властивості кожного елемента. Каталог у 50 000 товарів з 30 властивостями — півтора мільйона рядків. Розумний фільтр робить JOIN цієї таблиці з b_iblock_element за п'ятьма властивостями — і MySQL йде у full table scan на 3-5 секунд. Оптимізація Бітрікс починається з цієї таблиці й розходиться на всю інфраструктуру.

Серверна оптимізація

Nginx. Не просто «увімкнули gzip». Конкретно:

  • gzip_comp_level 4-5 — вище безглуздо, CPU з'їдає більше, ніж економить трафік
  • brotli on з brotli_static on — для попередньо стиснених файлів
  • HTTP/2 з http2_max_concurrent_streams 128
  • fastcgi_cache для PHP-відповідей — кешування на рівні Nginx, минаючи PHP-FPM взагалі
  • worker_processes auto, worker_connections під реальну кількість одночасних з'єднань

PHP-FPM. Вибір між pm = dynamic та pm = static — не академічний:

  • Static: фіксована кількість воркерів, без overhead на форк. Для виділених серверів з передбачуваним навантаженням
  • Dynamic: економить RAM при низькому трафіку. pm.max_children розраховуємо як (доступна RAM - RAM для MySQL/Redis) / середня витрата на процес
  • OPcache: opcache.memory_consumption=256, opcache.max_accelerated_files=20000, opcache.validate_timestamps=0 на продакшені (перезавантаження PHP-FPM при деплої)

MySQL/MariaDB. Майже завжди головне вузьке місце:

  • slow_query_log з порогом 0.5 сек. Розбираємо кожен запит через EXPLAIN
  • innodb_buffer_pool_size = 70-80% доступної RAM на виділеному сервері
  • query_cache_type = 0 на MySQL 8.x (query cache видалено) або MariaDB з query_cache_size під профіль навантаження
  • Складені індекси для фасетного пошуку: (IBLOCK_ID, IBLOCK_PROPERTY_ID, VALUE) на b_iblock_element_property
  • OPTIMIZE TABLE b_iblock_element_property після масових операцій

Кешування: три рівні

Керований кеш компонентів. TTL налаштовуємо для кожного компонента окремо. Каталог — 3600 сек, стрічка новин — 300 сек, банери — 86400. Однаковий TTL скрізь — гарантія або застарілих даних, або марного кешу.

Композитний кеш. Технологія «Композитний сайт» (bitrix:composite). Nginx віддає готовий HTML з файлу, PHP не запускається. Динамічні зони (кошик, авторизація, регіональний контент) підвантажуються AJAX-запитом через CBitrixComponent::setFrameMode(true). TTFB < 50 мс. Але: не всі компоненти сумісні, $APPLICATION->ShowPanel() та прямий вивід через echo ламають композит. Перевіряємо кожну сторінку через панель «Продуктивність → Композитний сайт».

Memcached / Redis. Переносимо кеш з файлової системи:

  • Сесії → Redis (session.save_handler = redis). Швидше за файлове зберігання у 10-50 разів, плюс працює у кластері
  • Кеш компонентів → Memcached через налаштування у .settings.php: 'cache' => ['type' => 'memcache']
  • Кеш ORM-запитів — щоб однакові GetList() не навантажували MySQL на кожному хіті

Фронтенд

Зображення — 60-80% ваги сторінки:

  • WebP через CFile::ResizeImageGet() з BX_RESIZE_IMAGE_PROPORTIONAL + конвертація
  • srcset + sizes — не вантажимо 3000px картинку у блок 400px
  • loading="lazy" для всього нижче першого екрану
  • AVIF для браузерів з підтримкою — ще 20-30% економії vs WebP

CSS/JS:

  • Вбудований модуль Бітрікс: об'єднання та мініфікація через «Налаштування → Оптимізація CSS/JS»
  • PurgeCSS / UnCSS — на типовому Бітрікс-проєкті 60-70% CSS не використовуються (підтягуються стилі всіх підключених компонентів)
  • defer / async для некритичного JS
  • Critical CSS інлайном у <head> для миттєвого FCP

Шрифти:

  • <link rel="preload" as="font" crossorigin> для основного шрифту
  • font-display: swap — текст видно одразу, шрифт довантажується
  • Subsetting через pyftsubset — вирізаємо кирилицю + латиницю, решта не потрібна. Файл зменшується у 3-5 разів

CDN

  • Cloudflare, BunnyCDN, AWS CloudFront або українські/російські (Selectel CDN, VK Cloud CDN)
  • Статика (CSS, JS, зображення, шрифти) — через CDN
  • Правила кешування: Cache-Control: public, max-age=31536000, immutable для файлів з хешем у назві
  • imgproxy або Cloudflare Polish — оптимізація зображень на льоту, без навантаження на origin

Навантажувальне тестування

Не синтетичні бенчмарки, а реальні сценарії:

  • k6 / wrk — імітація маршрутів: каталог → фільтрація → картка → кошик → оформлення
  • Метрики: RPS, час відповіді (p50, p95, p99), відсоток помилок
  • Xdebug (callgrind) або Blackfire — профілювання PHP, пошук конкретних вузьких місць. Бачимо, що CIBlockElement::GetList() з п'ятьма PROPERTY_* фільтрами займає 2 сек — оптимізуємо саме цей виклик

Оптимізація БД: глибше стандартних налаштувань

Індекси. Складені індекси для фасетного пошуку. Покривні індекси для частих вибірок — MySQL відповідає з індексу, не звертаючись до даних. Часткові індекси (MariaDB) для фільтрації за ACTIVE = 'Y'. Аудит невикористаних індексів — кожен уповільнює INSERT/UPDATE.

Партиціонування. Для таблиць з мільйонами рядків: b_stat_session, b_search_content_stem, Highload-блоки з історією. Партиціонування за датою — запит «замовлення за місяць» не сканує дані за три роки.

Очищення. У будь-якій базі Бітрікс за рік-два накопичується: застарілий пошуковий індекс у b_search_content, прострочені записи у b_cache_tag, історія b_iblock_element_prop_s* за роки, логи у b_event_log на гігабайти. Налаштовуємо регулярне очищення через агенти.

Результати

Метрика До Після
TTFB 800-2000 мс 50-200 мс
Повне завантаження 4-8 сек 1.5-2.5 сек
PageSpeed (мобільний) 30-50 80-95
Одночасні користувачі 50-100 500-2000+

Моніторинг

Без моніторингу через півроку все деградує. Новий модуль, нерозчищені логи, зміна у шаблоні — і швидкість повернулася до початкової.

  • web-vitals API — Real User Monitoring від реальних відвідувачів
  • Synthetic monitoring — Pingdom, UptimeRobot, регулярні перевірки з різних локацій
  • Алерти — TTFB > 500 мс або LCP > 3 сек → сповіщення

Хостинг

Тип Для кого Обмеження
Shared Візитки, до 500 відвідувань/день Немає контролю над PHP-FPM, Redis, Nginx
VPS/VDS Більшість проєктів До 30K відвідувань/день при правильному налаштуванні
Dedicated Великі магазини Повний контроль, NVMe, багато RAM
Хмара (Yandex Cloud, VK Cloud, AWS) Нерівномірне навантаження Автоскейлінг на розпродажах, відмовостійкість

Вартість

Тип робіт Терміни Вартість
Базова оптимізація (кеш, зображення, мініфікація) 2-3 дні від 25 000 руб.
Оптимізація БД (індекси, slow queries, налаштування) 3-5 днів від 40 000 руб.
Серверна інфраструктура (Nginx, PHP-FPM, Redis) 2-3 дні від 30 000 руб.
Комплексна (сервер + БД + фронтенд + CDN) 1-3 тижні від 80 000 руб.
Навантажувальне тестування і профілювання 2-3 дні від 20 000 руб.
Кластерна архітектура (балансування, реплікація) 1-2 тижні від 120 000 руб.

Скорочення TTFB на 1 секунду дає приблизно +7% до конверсії. Для магазину з оборотом 5 млн/міс — це 350K додаткової виручки щомісяця.