Краткий обзор технологии «композитный сайт»

23 октября, 2018 14:20
Admin
19 июня, 2022 9:03

В настоящее время скорость загрузки страниц любого сайта имеет не малое значение, так как далеко не каждый пользователь захочет долго ждать пока сайт загружается. Система управления 1С Битрикс предлагает внедрение технологии, которая позволит ускорить загрузку содержимого вашего сайта. Название данной технологии — композитный сайт. Нужна ли данная технология или нет? Как ее настроить, если все же решение о ее внедрении на ваш сайт имеет место быть? Именно об этом пойдет речь в данной статье.

Нужен ли композитный режим?

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

В каких случаях, на мой взгляд, данную технологию использовать не стоит?

  1. Если ваш сайт и без того грузится достаточно быстро, или большая часть ваших страниц уже работает в режиме кеширования, то настройка данной технологии неопытным пользователем может только усугубить ситуацию: не в плане скорости отдачи страниц, а в плане появления ошибок на страницах, где может быть использовано большое количество javascript кода со сложной логикой работы.
  2. Если ваша версия битрикса ниже 16.0.14, и ваш сайт не имеет активной лицензии, в таком случае данный режим работать не будет.
  3. Если вы по какой-то причине решили, что ваш сайт должен работать на версиях Internet Explorer 6-9. В данных версиях этого браузера эта технология отключена.

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

Примечание: В зависимости от сложности сайта, его объема и других показательных величин, настройка данной технологии может потребовать разного количества времени.

Подготовка к работе сайта в композитном режиме, этапы развития композита

Самое первое, что необходимо определить перед началом настройки композитного режима — это версию вашей системы управления 1С Битрикс, так как в зависимости от версии настройка данной технологии может отличаться.

Можно выделить 3 основных этапа развития технологии, в рамках которых, настройка данного режима будет отличаться:

  1. В версии 14.5.0 добавлена технология композитного сайта. Адаптация сайта (настройка компонентов, включение логирования) - всё в ручном режиме.
  2. Версия 16.0.14:
    • новый режим "Автокомпозит": все неадаптированные компоненты автоматически создают динамические области с заглушкой в виде своего содержимого. Перед включением этого режима необходимо очистить кеш компонентов.
    • настройка "Режим перезаписи кеша": стандартный режим, стандартный режим с задержкой перезаписи и режим без фонового ajax-запроса.
    • настройка "Голосование шаблона компонента по умолчанию" позволяет указать, как голосуют все неадаптированные шаблоны проекта. Данный параметр можно переопределить в настройках конкретного компонента.
    • новый алгоритм обновления динамических областей. Если контент заглушки не изменился при фоновом ajax-запросе, данные динамической области не приходят и не обновляются.
    • новый алгоритм разметки динамических областей. Вместо div-контейнера, создается пара невидимых тегов, не влияющих на верстку страницы.
    • протокол HTTPS поддерживается по умолчанию.
    • добавлена настройка отключения кнопки "Быстро с 1С-Битрикс".
    • срок действия лицензии теперь не влияет на работу композитного сайта.
    • настройка "Параметры URL, при которых не будет работать композитный режим".
    • оптимизирован механизм создания кеша для highload-проектов.
    • новая настройка "Игнорировать следующие параметры URL" позволяет не учитывать определенные параметры в адресе страницы (например, utm_source, fb_action_ids и др.)
    • HTML-кеширование заменено технологией "Композитный сайт". Для редакции "Первый сайт" необходимо очистить кеш компонентов. Дебаг и логирование по-прежнему в ручном режиме.
  3. Версия 17.1.0
    • все классы технологии теперь находятся в пространстве имен \Bitrix\Main\Composite\.
    • в административном разделе добавлены новые страницы мониторинга и отладки.
    • логирование всех ошибок, при которых режим кеширования может не сработать.
    • отказ от константы BX_COMPOSITE_DEBUG.
    • визуальное сравнение версий для поиска причин перезаписи кеша.

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

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

Первое, что необходимо сделать — это зайти в раздел настройки > настройки продукта > композитный сайт > настройки и во вкладке «АвтоКомпозит» включить данный режим (рис.1).

Рис.1 composite

Затем заходим в раздел настройки > настройки продукта > композитный сайт > отладка, выбираем срок, в течении которого мы будем осуществлять отладку и нажимаем «Включить отладку» (рис.2).

Рис.2 composite-debug

После чего нам потребуется зайти на наш сайт с чистого браузера или в режиме инкогнито и открыть страницу, которую мы собираемся настраивать для работы в композитном режиме. Изначально при первом посещении страницы она записывается в композитный кеш, а уже при повторном заходе на нее отдается из кеша, в результате чего мы можем наблюдать в нижней части страницы кнопку «Быстро с 1С Битрикс» (при необходимости данную кнопку можно настроить под дизайн вашего сайта или убрать). Также мы можем установить расширение для браузера Google Chorome, под названием Bitrix Composite Notifier, которое отображается цветным, если страница работает в композитном режиме. Это будет означать, что наша страница работает корректно, но это не гарантия того, что данный режим правильно настроен. Самое простое как раз таки и заключается в том, чтобы данный режим начал работать, а самое сложное выясняется позднее, когда в зависимости от содержимого в режиме отладки, мы можем наблюдать, что на странице происходит перезапись кеша. Это означает, что на нашей странице есть динамическое содержимое, которое может изменяться. К такому содержимому, например, можно отнести корзину интернет магазина (имеется в виду малая корзина в шапке сайта, как правило, а не страница корзины), так как в зависимости от действий пользователя вашего магазина содержимое корзины будет меняться. Поэтому, как раз таки корзину и стоит поместить в динамическую область.

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

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

Как поместить содержимое в динамическую область?

Для этого, в шаблоне компонента необходимо указать следующую конструкцию:

<?php
$frame = $this->createFrame("sale-basket-basket-line-container", false)->begin();
//Здесь содержится динамический контент
$frame->beginStub();
//Здесь указывается заглушка
$frame->end();
?>

Первым параметром в методе createFrame указывается контейнер, который будет использован в оформлении вывода данных. А заглушка — это содержимое, которое пользователь может увидеть до того, как будет загружен динамический контент.

А если в начале компонента разместить конструкцию $this->createFrame() ->begin('Загрузка'); и нигде ее не закрыть, то реально это будет означать, что компонент динамичный.

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

<?php
$this->setFrameMode(false);
?>

Это будет означать, что компонент голосует «против» и в таком случае, вся страница не сможет работать в данном режиме.

Выводы

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

Для более ранних версий Битрикса настройка будет отличаться и указанные в данной статье советы могут не подойти, поэтому, для более детальной информации по данной технологии стоит обратиться к курсу: «Технология композитный сайт», где более подробно описан процесс настройки, поскольку в данной статье описан только краткий обзор данной технологии.