Повышение скорости работы сайта на Bitrix - Сергей Житников: Web-разработчик

Повышение скорости работы сайта на Bitrix

Включаем в главном модуле оптимизацию CSS

На изображении ниже показано, где включить «галки». Стоит учитывать, что иногда включение всех пунктов ломает отображение стилей или работу скриптов. После включения настроек необходимо проверить работу сайта.

Убрираем в главном модуле настройку

Скрин настройки в главном модуле Bitrix

Блокируем загрузку служебных скриптов и стилей

Блокируем загрузку служебных стилей, не нужных обычным пользователям. Код ниже добавлять в init.php. Этот код удаляет ненужные скрипты и стили, которые используются только для админки. Их список нужно ВСЕГДА корректировать

\Bitrix\Main\EventManager::getInstance()->addEventHandler("main", "OnEndBufferContent", "deleteKernelJs"); //включаем событие отложенной загрузки
\Bitrix\Main\EventManager::getInstance()->addEventHandler("main", "OnEndBufferContent", "deleteKernelCss"); //включаем событие отложенной загрузки

function deleteKernelCss (&$content)
{
    global $USER;
    global $APPLICATION;
    $art = [];
    if (!$USER->IsAuthorized())
    {
        if (strpos($APPLICATION->GetCurPage(), 'bitrix') === false &&
            strpos($APPLICATION->GetCurPage(), 'catalog') === false &&
            strpos($APPLICATION->GetCurPage(), 'order') === false &&
            strpos($APPLICATION->GetCurPage(), 'basket') === false)
        {
            $arPatternsToRemove = Array(
                '/<link.+?href=".+?kernel_main\/kernel_main_v1\.css\?\d+"[^>]+>/',
                '/<link.+?href=".+?bitrix\/js\/main\/core\/css\/core[^"]+"[^>]+>/',
                '/<link.+?href=".+?bitrix\/panel\/main\/popup[^"]+"[^>]+>/',
                '/<link.+?href=".+?bitrix\/templates\/aspro_next\/bg_color\/light\/bgcolors[^"]+"[^>]+>/',
                '/<link.+?href=".+?bitrix\/templates\/[\w\d_-]+\/styles.css[^"]+"[^>]+>/',
                '/<link.+?href=".+?bitrix\/templates\/[\w\d_-]+\/template_styles.css[^"]+"[^>]+>/',
            );
            $content = preg_replace($arPatternsToRemove, " ", $content);
        }
    }
}

function deleteKernelJs(&$content) {
    global $USER, $APPLICATION;
    if((is_object($USER) && $USER->IsAuthorized()) || strpos($APPLICATION->GetCurDir(), "/bitrix/")!==false) return;
    if($APPLICATION->GetProperty("save_kernel") == "Y") return;

    $arPatternsToRemove = Array(
        '/<script.+?src=".+?kernel_main\/kernel_main\.js\?\d+"><\/script\>/',
        '/<script.+?src=".+?bitrix\/js\/main\/core\/core[^"]+"><\/script\>/',
        '/<script.+?src=".+?bitrix\/js\/main\/core\/core_admin[^"]+"><\/script\>/',
        '/<script.+?src=".+?bitrix\/js\/main\/core\/core_ls[^"]+"><\/script\>/',
        '/<script.+?src=".+?bitrix\/cache\/js\/s1\/aspro_next\/kernel_main\/kernel_main_v1[^"]+"><\/script\>/',
        '/<script.+?>BX\.(setCSSList|setJSList)\(\[.+?\]\).*?<\/script>/',
        '/<script.+?>if\(\!window\.BX\)window\.BX.+?<\/script>/',
        '/<script[^>]+?>\(window\.BX\|\|top\.BX\)\.message[^<]+<\/script>/',
    );

    $content = preg_replace($arPatternsToRemove, "", $content);
    $content = preg_replace("/\n{2,}/", "\n\n", $content);
}

Файл kernel_main.css в режиме сжатия и объединения CSS сохраняет там содержимое style.css кастомных шаблонов компонентов. Поэтому приведенный выше код может «сломать» стили и скрипты сайта.

Сергей Житников
Об авторе

Сергей Житников - Веб-разработчик

Занимаюсь веб-разработкой более 5 лет. Специализируюсь на создании адаптивных сайтов и веб-приложений на HTML5, CSS3 и JavaScript. Работаю с популярными CMS и фреймворками, а также уделяю большое внимание оптимизации производительности и чистоте кода.

Есть проект или идея? Буду рад помочь!

Связаться со мной

Последние статьи

19.06.2026
В статье собрал шпаргалку по основным компонентам Bitrix: bitrix:menu, news.list, news.detail, sale.basket.basket.line, main.include и breadcrumb. Разобрал настройку меню из разделов и элементов инфоблока через файлы .menu_ext.php, показываю полные конфигурации компонентов с пояснениями ключевых параметров. Готовые примеры для быстрого копирования и использования в проектах.
19.06.2026
Купоны в Битрикс неразрывно связаны с правилами работы с корзиной — без привязки к правилу они не сработают, а правило без купонов применит скидку на все товары. Разбираю создание купонов через DiscountCouponTable::add(): обязательные и опциональные поля, типы купонов, флаги активности. Показываю примеры работы с датами через объект DateTime (прибавление дней, месяцев и минут).
19.06.2026
Разбираю готовые примеры работы с изображениями в PHP: сохранение на сервер, вывод в браузер, рисование линий и прямоугольников. Отдельно — нюансы с форматами файлов (JPEG/PNG) и поддержкой кириллицы через шрифты.