Мы делаем самые быстрые
сайты в интернете!

Композитный режим Битрикс

Композитный режим Битрикс

Композитный режим - технология ускорения сайта, которая применяется на движке 1С Битрикс. Он позволяет отображать страницу пользователю за 0.1 - 0.5 секунды.

Преимущества композитного режима


Мгновенный показ страницы за 0.1 - 0.5 секунды

Повышение конверсии интернет магазина

Лучшее ранжирование сайта в поисковых системах

В некоторых случая при значительных поломках сайта (например ошибках в коде, потери доступа к базе данных), сайт продолжает работать.

Недостатки композитного режима

Остерегайтесь неквалифицированных специалистов!

Неправильной настройкой композитного режима можно увеличить скорость отклика сайта и понизить позиции сайта в поисковой выдаче!

Обращайтесь к квалифицированным специалистам. Мы настроим композитный режим с гарантией правильной работы!

Хотя композитный режим в Битриксе есть уже не первый год, на мой взгляд, технология ещё "сыренькая" и требует доработок.

Также из недостатков отмечу, что режим иногда ломается (чинится периодической чисткой кэша), может занимать дополнительное место на сервере. При включении технологии сайт начинает иметь некоторые особенности - обновлять информацию на втором обновлении страницы.

Композитный режим, примеры сайтов

http://www.vestnik-evropy.ru/
Информационный сайт. Обратите внимание на скорость отображения страницы при переходе с раздела на раздел

http://www.tochkarosi33.ru/
Современный дизайн, Маленький интернет магазин окон. А как быстро грузится?

https://sait-optimize.ru/
Мой сайт является композитным. Я специально оставил значок внизу страниц чтобы показать что технология включена и работает

Настройка композитного режима

В этой статье я опишу по шагам как настраивается композитный режим сайтов на движке "1с Битрикс". Почитав курсы далеко не сразу разберёшься как же настроить это чудо инженерной мысли, да и вообще что это за этакое чудо "композитный режим".

Только настроив его первый раз, я сам убедился, что технология действительно очень крутая и полезная для всех, а для пользователей сайта в первую очередь!

Итак, приступим:

Шаг 1. Включаем композитный режим в админке Битрикса

Заходим на наш сайт, авторизуемся под админом. Переходим в раздел Настройки > Настройки продукта > Композитный сайт. Нажимаем кнопочку "Включить композитный режим"

Кнопка включения композитного режима.jpg

Не забываем нажать на кнопочку "сохранить настройки".

Шаг 2. Настраиваем лог композитного режима

Необходимо включить лог композитного режима и разрешить в него запись. Заходим на сервер и редактируем файл /bitrix/php_interface/dbconn.php. Добавляем туда две строчки (если их нет). В этих строчках определяются две константы php:

define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/log_composite.txt"); // указывается путь к файлу с логом
define("BX_COMPOSITE_DEBUG", true); // разрешается запись лога в файл

После этих действий нужно выбрать любую, желательно простенькую, страницу сайта на которой будет настраиваться композитный режим. Заходим на нашу страницу сайта. Открываем создавшийся файлик с логом /log_composite.txt и убеждаемся что туда что-то записалось. Какой-то текст в логе означает что мы на правильном пути.

Шаг 3. Выводим значок Битрикса на страницу

Нужно выбрать место на странице, куда будет выведен значок Битрикса. Как известно, шаблон страницы делится на header и footer. Для примера предлагаю вывести в footer. Открываем /bitrix/templates/название шаблона/footer.php и добавляем в то место куда нужно вывести значок вот такой див:

<div id="bx-composite-banner"></div>

Обновляем нашу страницу пару раз и видим что действительно, значок выводится в том месте где мы его поставили.

Настроить внешний вид значка Битрикса можно в том же разделе Настройки > Настройки продукта > Композитный сайт во вкладке "кнопка".

Настройка внешнего вида значка Битрикса.jpg

Если значок не появился, это означает что композитный режим не работает и нужно искать причину неисправности.

Причины могут быть разные.

Теперь самое время включать голову и разбираться с теорией. А из теории в документации собственно пара основных пунктов, если выбросить всю прочую ерунду.

Теория тезис 1. Общая схема работы композитного режима

Композитный режим - это навороченный кэш. Схема работы композитного режима представлена на рисунке:
Блок схема работы композитного режима.jpg

При запросе пользователя система собирает html-страницу, сохраняет её на сервере в виде файла (кэш) и при обращении к этой странице отдаёт сохранённую (закэшированную) страницу. Причём после отдачи кэша, система выполняет php скрипты, собирает запрашиваемую страницу, сравнивает её с кэшем и если есть различие хотя бы в одном символе, система перезаписывает кэш.

Так происходит каждый раз при запросе любой страницы сайта.

Теория тезис 2. Понятия "статическая" и "динамическая" области в композитном режиме

Вызываемая пользователем страница имеет статические и динамические области. Эти термины в контексте композитного режима должны восприниматься не как стандартные понятия. Здесь понятие статическая область означает область на странице, которая при перезагрузке страницы остаётся в точности такой же как и до перезагрузки. Если какой-то контент на странице изменяется каждый раз, то такая область считается динамической.

Композитный режим позволяет существенно ускорить скорость загрузки страницы, но он также имеет небольшой недостаток. По сути здесь палка о двух концах - всё что включается в статическую область показывается пользователю сразу, кроме того, только статическая область индексируется поисковыми системами. Динамические области подгружаются на страницу после того как они будут вычислены и не принимают участия в индексировании роботами.

Шаг 4. Настройка голосования компонентов

Как известно, шаблон сайта имеет компоненты, поэтому для определения всей статической страницы (кэша) каждый компонент должен проголосовать "за" включение его в статическую часть, либо "против".

Если компонент голосует "за" - это означает, что выводимый компонентом текст каждый раз одинаковый и не меняется. Для голосования компонента в самом начале его шаблона нужно прописать следующую строчку:

$this->setFrameMode(true); // голосование шаблона "за" статический режим

Если же компонент голосует "против" - это значит что при каждой загрузке страницы возвращаемый компонентом текст разный. Для голосования компонентом "против" включения его в кэш, в самом начале его шаблона нужно прописать такую строчку:

$this->createFrame()->begin('Загрузка'); // "Загрузка" - текст, который отображается до загрузки контента

Причём слово "Загрузка" будет отображено сразу на странице в том месте где должен отработать шаблон компонента. Как только сервер вычислит текст который должен быть на месте шаблона, он подставит этот текст вместо слова "Загрузка".

Кроме этих двух состояний шаблон компонента может использовать смешанный режим - статическая область с динамическими вставками. В таком случае сам шаблон по умолчанию считается статическим. Для определения динамической зоны нужно прописать код:

$frame = $this->createFrame()->begin(); // начало динамической зоны
. . . // динамическая зона
$frame->beginStub(); // завершение динамической зоны
echo "Загрузка..."; // текст заглушки
$frame->end();

В некоторых случаях приходится объявлять динамические зоны вне компонентов. В этом случае используется следующий код:

\Bitrix\Main\Page\Frame::getInstance()->startDynamicWithID("area");
. . . // динамический контент вне компонента
\Bitrix\Main\Page\Frame::getInstance()->finishDynamicWithID("area", "Загрузка...");

Советы по отладке

Алгоритм действий по отладке композитного режима следующий:
1. выбираем нужную страницу
2. определяем все расположенные на ней компоненты
3. "голосуем" шаблонами компонентов "за" или "против" включения в статическую область
4. определяем возможные зоны в шаблоне сайта, которые могут быть включены в динамическую область
5. открываем страницу в браузере(при этом нужно быть не авторизованным пользователем на сайте), обновляем страницу пару раз
6. чистим лог композитного режима (открываем файл лога, удаляем от туда всё что есть, сохраняем, закрываем файл)
7. возвращаемся к браузеру, обновляем пару раз страницу
8. смотрим лог, находим ошибки, устраняем их, пункт 6, пункт 7, пункт 8 и т.д. до полного устранения ошибок

Если при работе композитного режима произошла ошибка, то значок Битрикса не будет показан и в лог запишется например следующее:

Host: sait-optimize.ru
Date: 2015-11-28 16:56:20
Module: Composite was rejected
Reason: /bitrix/templates/.default/components/bitrix/news.list/sertificat30/template.php
Request URI: /landing/kompozitnyy-rezhim/
Script: /landing/kompozitnyy-rezhim/index.php
...

Означающий что указанный компонент не проголосовал "за" или "против" включения шаблона в статическую часть.
Или например вот такая информация:

Host: sait-optimize.ru
Date: 2015-11-28 15:28:35
Module: composite
...

Сигнализирующая о том что при загрузке страницы был перезаписан кэш композитного режима.

Последний момент которых хотелось бы отметить - если у Вас при каждом хите происходит перезапись кэша, то это не правильно, т.к. каждый раз тратится время на запись в файл и происходит загромождение диска сервера, композитный режим увеличивает время загрузки страницы. В этом случае нужно ещё раз внимательно просмотреть две загруженные страницы, определить символы в которых они различаются и подумать как устранить этот дефект.

Не работает композитный режим?

  • Включите логирование композитного режима (в лог-файл должна писаться информация)
  • Почистите кэш
  • Пересохраните настройки композитного режима с разными параметрами
  • Очистите куки браузера
  • Проверьте нет ли GET параметра ncc равного 1
  • Тот ли домен стоит в настройках композитного режима
  • Обновите систему до последней версии

Услуги по настройке композитного режима

Примерно с версии 17.0... Битрикс сделал "автокомпозит" и заявил что технология теперь настраивается без помощи программиста (очень хотелось бы верить). Однако до этой версии композитный режим настраивался руками. Если ваш сайт имеет версию до 17.0, то стоимость настройки будет от 5000 рублей (в зависимости от объёма сайта). Если нужно проверить правильность работы композитного режима, или как-то донастроить его, то стоимость услуг можете узнать у меня.

Нужна настройка композитного режима? - Обращайтесь, настроим!

sait-optimize.ru - Для нас нет нерешаемых задач!

<- Вернуться к списку