Ускорение сайта на Битрикс
Битрикс довольно сложная и большая система, очень большая, настолько большая, что у неё есть свои тонкости работы практически во всех аспектах разработки и поддержки. В данной статье я расскажу о специфичных моментах в ускорении работы сайта на этой CMS, но, конечно же, приёмы из этой статьи остаются более чем актуальными.
Настройка системы
В админпанели CMS есть много полезных кнопок и настроек, распишу по пунктам.
Кеширование
Включите кеширование! ("Автокешировние", /bitrix/admin/cache.php?lang=ru). Это, наверное, самое главное, что можно сделать, так как запросы к БД - одна из самых медленных операций в вебе, а встроенный механизм кеширования снижает их количество в теории до нуля, в самом плохом случае он всё равно уменьшит их количество на пару порядков.
На последних версиях Битрикса нет смысла настраивать работу с html-кешированием (третья вкладка), так как появилась технология "Композитный сайт", который заменяет данный механизм. Подробно об его настройке будет написано позже.
Оптимизация css
В настройках главного модуля есть опции, которые сильно помогут вам с размером страницы. Названия говорят сами за себя:

Для правильной работы этого механизма вы должны подключать стили шаблона через SetAdditionalCSS, а скрипты через AddHeadScript, это позволит переносить скрипты вниз страницы.
"Подключать минифицированные версии CSS и JS файлов" означает, что если у вас рядом с файлом лежит файл с тем же именем и расширением, но перед расширением стоит ".min", то Битрикс подключит его, удобно.
CDN
О роли CDN уже было упомянуто в этом разделе в статье "Общие принципы ускорения сайтов", здесь стоит отметить лишь то, что в Битриксе есть успешная кнопка "Включить ускорение сайта" ("Ускорение сайта CDN", /bitrix/admin/bitrixcloud_cdn.php?lang=ru). Учтите, что она работает только при активной лицензии.
Статистика
Я бы рекомендовал отключить сбор статистики (в модуле "Веб-Аналитика" нужно отключить все сохранения). Наверняка, вы подключили хотя бы метрику от Яндекса, так что, как минимум, нет смысла дублировать этот функционал (к тому же как-то странно она работает), тем более на своём сервере.
Обновления
Обновиться - всегда хорошая идея, да и глупо не делать этого в столь дорогом продукте. Новые обновления улучшают работу с кешем, уменьшают количества запросов, оптимизируют код и делают много чего ещё хорошего. Сделайте бекап и обновитесь.
Панель производительности
В Битриксе есть страница настроек "Панель производительности" (/bitrix/admin/perfmon_panel.php?lang=ru), она сильно поможет вам в оптимизации сайта, проведёт множество тестов, выявит ошибки и недочёты, подскажет пути исправления. Просто выполняйте её рекомендации и точно заметите разницу.
Работа с компонентами
В 1С-Битрикс практически вся информация выводится через компоненты. В рамках данной статьи я не буду объяснять что это такое и как с ними работать, но расскажу как нормализовать их работу в целях быстродействия сайта.
Используйте подходящие компоненты
Не очень очевидный шаг. В большинстве случаев вы используете при работе только стандартные компоненты, меняя лишь их шаблоны вывода, и это правильно. Для вывода элементов инфоблока вы используете news.list, а для вывода товаров catalog.section.
В основном компоненты не взаимозаменяемые, но есть, к примеру, пара компонентов sale.basket.basket.line и sale.basket.basket.small, которые очень часто оба подходят к шаблону сайта. Необходимо понимать, что sale.basket.basket.line совершает меньше запросов к бд, поэтому очевидно, что выбрать надо его. Обращайте на это внимание при выборе компонентов.
Используйте стандартные компоненты
Иногда вы можете подумать, что работу какого-то компонента можно ускорить, создав свой со своим component.php, и иногда даже будете правы, но я бы рекомендовал использовать дефолтные хотя бы только из-за интеграции с ядром.
Здесь есть несколько причин.
- Во-первых, механизм кеширования в Битриксе довольно скользкая тема и нет ничего более заточенного под работу с ним, чем родные компоненты. Да и если нет, то новые обновления когда-нибудь решат этот вопрос.
- Во-вторых, обновления. Со временем они улучшают всё.
Подключение компонентов
Очень редко, если, вообще, когда-либо ваш шаблон будет меняться в зависимости от группы пользователя, поэтому у всех компонентов необходимо убрать параметр "Учитывать права доступа" (выставить "CACHE_GROUPS" в "N"). За счёт этого кеш будет создаться лишь однажды и показываться всем группам пользователей, а это сэкономит нам количество обращений к БД и место на сервере.
Также там, где у вас компоненты подключены с каким-то условием по фильтру (или фильтрации даже и близко нет), стоит включить "Кешировать при установленном фильтре" ("CACHE_FILTER" => "Y"), иначе на каждом хите будут выполняться лишние запросы.
Если не надо выводить количество товаров в списке категорий, отключите подсчёт элементов в catalog.section.list ("Показывать количество элементов в разделе", "COUNT_ELEMENTS"). Это сэкономит сотни запросов.
Стили и скрипты шаблона компонента
В Битриксе шаблон компонента может подключать свои собственные стили и js-скрипты, поэтому хорошим шагом будет вынести js и css из шаблона сайта в компоненты там где это возможно, тем самым подключая на странице только нужный код, что уменьшает размер страницы. Да и в плане поддержки это правильное решение.
Несказанные очевидности из прошлой статьи
Некоторые моменты не были рассмотрены в данной статье, так как они вытекают из предыдущей и Битрикс не привнёс в них свою специфику.
Как и везде вам также надо самим следить за своим кодом. Старайтесь оптимизировать тот код, который вы пишите в result_modifier.php и component_epilog.php. Если вы работайте со своими компонентами и модулями, добавляете код в php_interface, и они тормозят сайт, то это совсем не по вине Битрикса. То же самое касается css и js на страницах.
Обязательно сжимайте картинки. Для небольшого упрощения этой задачи зайдите в настройки инфоблока и настройте создание картинки анонса нужного размера из детальной картинки с уменьшением размера. Это к тому же ещё и упростит жизнь контент-менеджера.

Заключение
Держите эти советы в голове при разработке сайта на 1С-Битрикс, они не самые очевидные, но сильно помогут вам в вашем деле.
Комментарии
Артур 04.02.2016 16:09
Аристов Василий 04.02.2016 16:15
Он разделяет кеш для разных групп пользователей, то есть под админом вы будете видеть одно, под обычным пользователем другое
Если вы не уверены, что этот параметр вам нужен, смело ставьте в "N"
Артур 05.02.2016 10:11
Аристов Василий 05.02.2016 16:03