Настройка сжатия CSS и JS на 1С-Битрикс
Без сжатия исходные CSS и JS файлы Битрикс-проекта передаются клиенту в оригинальном размере. Для среднего проекта это 500 KB–2 MB суммарно. Gzip или Brotli сжатие снижает объём передаваемых данных в 3–7 раз для текстовых ресурсов — это один из самых простых в реализации приростов скорости.
Встроенные инструменты сжатия Битрикс
Битрикс включает собственный механизм минификации и объединения CSS/JS, доступный в Настройки → Производительность → Сжатие. Он работает на уровне PHP: собирает подключённые через CMain::AddCSSLink() и CMain::AddHeadScript() файлы, минифицирует их и сохраняет в /bitrix/cache/css/ и /bitrix/cache/js/. Результирующие файлы получают хеш в имени — браузер кеширует их агрессивно.
Важно: минификация Битрикс работает только с файлами, подключёнными через API Битрикс. CSS и JS, подключённые напрямую в шаблоне через <link> и <script>, не обрабатываются. На legacy-проектах нередко половина файлов подключена «мимо» API.
Сжатие на уровне nginx
Минификация уменьшает размер файлов, но сжатие при передаче (gzip/Brotli) — отдельная задача. Конфигурация в nginx:
gzip on;
gzip_types text/css application/javascript application/json text/javascript;
gzip_min_length 1024;
gzip_comp_level 5;
gzip_vary on;
gzip_comp_level 5 — баланс между степенью сжатия и нагрузкой на CPU. Уровни 6–9 дают минимальный прирост сжатия при значительно большей нагрузке. gzip_vary on добавляет заголовок Vary: Accept-Encoding, необходимый для корректной работы кеширующих прокси и CDN.
Что проверить при настройке
Частая ошибка: gzip включён в nginx, но PHP-FPM или сам Битрикс тоже сжимают ответ — получается двойное сжатие. Симптом: браузер выдаёт ошибку декодирования или файл скачивается вместо выполнения. Проверяется через curl -I -H "Accept-Encoding: gzip" https://mysite.ru/bitrix/cache/css/file.css — в заголовках должно быть Content-Encoding: gzip.
Для минифицированных файлов с хешем в имени рекомендуется настроить статическое (pre-compressed) сжатие через gzip_static on — nginx отдаёт заранее сжатый .gz-файл без нагрузки на CPU в реальном времени.
Кейс и типичный результат
Корпоративный сайт на Битрикс «Стандарт», 12 CSS и 23 JS файла подключены через API. После включения минификации Битрикс и gzip на nginx: суммарный размер CSS+JS снизился с 1,4 MB до 180 KB (минификация) → 48 KB (gzip). Количество HTTP-запросов к CSS сократилось с 12 до 2, к JS — с 23 до 3. Время до DOMContentLoaded снизилось на 0,8 с на мобильных соединениях 3G.
Настройка занимает 4–8 часов: аудит способов подключения CSS/JS, перевод прямых подключений на API Битрикс, включение минификации, настройка gzip в nginx, проверка отсутствия двойного сжатия.







