Логотип

Ускорение сайта на Битрикс

Битрикс довольно сложная и большая система, очень большая, настолько большая, что у неё есть свои тонкости работы практически во всех аспектах разработки и поддержки. В данной статье я расскажу о специфичных моментах в ускорении работы сайта на этой 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

Когда разрабатываешься сайт, админом наполняешь, правишь - на сайте под гостем старое. Очищаешь кеш, сначала всё ок, но со временем снова старое выводит. Спасает цитирую из текста: "выставить "CACHE_GROUPS" в "N"". Почему так?
Аристов Василий

Аристов Василий 04.02.2016 16:15

Я всегда ставлю этот параметр в "N"
Он разделяет кеш для разных групп пользователей, то есть под админом вы будете видеть одно, под обычным пользователем другое
Если вы не уверены, что этот параметр вам нужен, смело ставьте в "N"
Артур

Артур 05.02.2016 10:11

Интересно, а зачем он вообще нужен?)) Типа для отладки? Пока отрабатываешь какой-то раздел, остальные его не видят...
Аристов Василий

Аристов Василий 05.02.2016 16:03

Да скорее всего для разделения контента для залогиненных пользователей и нет

Написать комментарий

Внимание!

Этот сайт использует технологию "cookies" и интернет-сервисы для сбора технических данных!

Условия использования и другие юридические моменты можно найти в пользовательском соглашении и в политике конфиденциальности.

Цель - получение статистической информации и возможность работы множества сервисов на страницах сайта и самого сайта.

Если Вы не согласны на обработку данных на указанных выше условиях, покиньте сайт.