Объединение CSS и JS файлов 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Объединение CSS и JS файлов 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

Объединение CSS и JS файлов 1С-Битрикс

На проекте, который разрабатывался несколько лет несколькими командами, типична ситуация: каждый модуль, каждый компонент, каждый виджет подключает собственные CSS и JS файлы. Chrome DevTools → Network показывает 60–120 запросов только к стилям и скриптам. Даже при HTTP/2 (который теоретически мультиплексирует запросы) это создаёт overhead на DNS lookup, TCP handshake, TLS negotiation для каждого домена и приоритизацию запросов. На мобильных сетях 100 мелких запросов всегда хуже, чем 5 крупных.

Встроенный механизм объединения Битрикс

Битрикс предоставляет два инструмента для объединения файлов: через CMain::AddCSSLink() / CMain::AddHeadScript() с включённой минификацией (Настройки → Производительность → Сжатие), и через компонент bitrix:main.include с параметрами пакетирования.

При включённой минификации Битрикс группирует CSS в один файл /bitrix/cache/css/<hash>.css и JS — в /bitrix/cache/js/<hash>.js. Ключевое ограничение: объединяются только файлы, зарегистрированные через PHP-API до вызова ShowHead(). Файлы, подключённые через <link> в шаблонах напрямую, не войдут в пакет.

Проблемы и их решение

Порядок подключения. При объединении порядок CSS-правил меняется, что ломает стили, основанные на специфичности каскада. Решение: явно контролировать порядок через \Bitrix\Main\Page\Asset::addCss() с приоритетами, или разбить на два бандла — «базовый» (reset, grid, typography) и «компонентный».

Inline-стили и скрипты. Многие компоненты Битрикс генерируют <style> и <script> теги прямо в HTML — они не объединяются автоматически. Для кастомных компонентов это переносится в файлы через $this->addExternalCSS() и $this->addExternalJS().

Условная загрузка. Некоторые скрипты нужны только на конкретных страницах (редактор форм, слайдер на главной, карта на странице контактов). Объединение всего в один бандл увеличивает его размер. Правильный подход — разделить на критический бандл (загружается везде) и страничные бандлы (загружаются по условию).

Webpack/Vite как альтернатива встроенным инструментам

Для проектов с активным фронтендом встроенного механизма объединения Битрикс недостаточно. Современный подход — сборка через Webpack или Vite с отдельным webpack.config.js для битрикс-шаблона. Преимущества: tree shaking (удаление неиспользуемого кода), code splitting, обработка SCSS/LESS, транспиляция TypeScript.

Пример структуры для Vite + Битрикс-шаблон:

local/templates/mytemplate/
├── src/
│   ├── css/
│   │   ├── main.scss
│   │   └── components/
│   ├── js/
│   │   ├── app.js
│   │   └── pages/
├── dist/       ← сюда собирает Vite
│   ├── app.[hash].css
│   └── app.[hash].js
├── header.php  ← подключает dist/
└── vite.config.js

header.php подключает файлы из dist/ через CMain::AddCSSLink() — так они попадают в общий механизм кеширования Битрикс.

Кейс: портал с несколькими командами разработки

B2B-портал, 5 лет в разработке, три команды сменились. На странице каталога: 47 CSS-запросов (суммарно 890 KB без сжатия), 68 JS-запросов (суммарно 1,4 MB). Аудит показал: 12 CSS файлов дублировались (одни и те же нормализаторы подключены в разных компонентах), 8 JS-библиотек загружались в нескольких версиях одновременно (jQuery 1.9, 2.1 и 3.6 на одной странице).

Что сделали:

  • Аудит всех подключений через перехват CMain::AddCSSLink() и AddHeadScript() с логированием
  • Унификация библиотек: jQuery единая версия, удаление дублей
  • Перенос всех прямых <link> в API Битрикс
  • Настройка сборки через Vite для нового кода, упаковка legacy в единый бандл
  • Code splitting: критический бандл + 4 страничных бандла

Результат: 47 CSS-запросов → 3, 68 JS-запросов → 5. Суммарный вес CSS+JS (после gzip) снизился с 850 KB до 210 KB за счёт удаления дублей и tree shaking.

Сроки

Тип проекта Содержание работ Срок
Простой сайт (1 шаблон, <30 компонентов) Перевод подключений на API, включение минификации 1–2 дня
Средний проект (кастомный фронтенд, несколько шаблонов) Аудит + унификация библиотек + настройка сборки 3–7 дней
Крупный портал (множество команд, legacy код) Полный аудит, рефакторинг подключений, настройка Webpack/Vite 7–20 дней

Нагрузочное тестирование после объединения обязательно — в редких случаях порядок загрузки скриптов важен, и его нарушение приводит к JS-ошибкам на конкретных страницах.