Настройка технологии композитный сайт
Для удобства, работать будем сразу в двух браузерах. В браузере Firefox будем задавать настройки в панели управления, смотреть список закешированных страниц, запускать отладку. А в браузере Chrome с установленным плагином Bitrix Composite Notifier
— проверять работу сайта в композитном режиме, как неавторизованный пользователь.
В панели управления переходим на страницу Настройки -> Настройки продукта -> Композитный сайт -> Настройка
, открываем вторую вкладку «Композит», нажимаем кнопку «Включить композит»:
На вкладке «Настройки» устанавливаем:
- Голосование шаблона компонента по умолчанию — «против», шаблоны будем настраивать сами
- Режим перезаписи кеша — «стандартный»
На вкладке «Группы» можно включить композит для отдельных групп пользователей. Для различения пользователей используются служебные cookie
:
_NCC (No Composite Cache)
для пользователей, которым страница не должна отображаться в композитном режиме_CC (Composite Cache)
для пользователей, которым страница должна отображаться в композитном режиме
Подготовка компонентов
Тестовый сайт у меня самый простой, все страницы статические, и только одна использует самописный комплексный компонент. Этот компонент умеет показывать раздел инфоблока, отдельный элемент инфоблока и главную страницу (корневые разделы инфоблока + популярные элементы). Мы в настройках композита задали, что шаблон компонента всегда голосует против композита, поэтому для каждого простого компонента, входящего в состав комплексного, надо переопределить это значение по умолчанию. Просто добавить строчку:
$this->setFrameMode(true);
<?
/*
* Файл template.php
*/
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true) die();
// шаблон компонента голосует за композит — шаблон статичный, и его можно записывать в кеш
$this->setFrameMode(true);
?>
<h1><?= $arResult['NAME']; ?></h1>
<article id="iblock-element">
<? if (!empty($arResult['DETAIL_PICTURE'])): ?>
<img src="<?= $arResult['DETAIL_PICTURE']['SRC']; ?>" alt="<?= $arResult['DETAIL_PICTURE']['ALT']; ?>" title="<?= $arResult['DETAIL_PICTURE']['TITLE']; ?>" />
<? endif; ?>
<p>Количество просмотров: <?= $arResult['SHOW_COUNTER'] ? $arResult['SHOW_COUNTER'] : 0; ?></p>
<? if (!empty($arResult['DETAIL_TEXT'])): ?>
<div>
<?= $arResult['DETAIL_TEXT'] ?>
</div>
<? endif; ?>
<p><a href="<?= $arResult['SECTION']['SECTION_PAGE_URL']; ?>">Назад в раздел</a></p>
</article>
Страница попадает в кеш, если все компоненты, размещенные на странице, проголосовали за композит. В том числе «за» должны проголосовать и компоненты, подключение которых происходит в шаблонах сайта header.php
и footer.php
, а не только те, которые расположены в рабочей области #WORK_AREA#
.
Вроде бы все готово, можно проверять. Заходим на страницу этого самописного комплексного компонента как не авторизованный пользователь, и просматриваем три страницы: главная, раздел инфоблока, элемент инфоблока. После первой загрузки любой из этих страниц иконка плагина Bitrix Composite Notifier
черно-белая, а после второй уже цветная — это значит, что композит работает.
Плагин Bitrix Composite Notifier
довольно глючный. У меня он почти всегда зеленый, даже на страницах yandex.ru и google.com. Так что надо кликнуть по иконке плагина, и если в окошке будет информации по композиту, значит композит работает:
Page
X-Bitrix-Composite: Cache (200)
HTTP Status: HTTP/1.1 200 OK
Server Response: 9ms
DomContentLoaded: 359ms
Ajax Request
X-Bitrix-Composite: Ajax (stable)
В панели управления, на странице Настройки -> Настройки продукта -> Композитный сайт -> Страницы
, можно посмотреть список закешированных страниц:
Эти данные хранятся в таблице базы данных b_composite_page
:
ID CACHE_KEY HOST URI TITLE CREATED CHANGED LAST_VIEWED VIEWS REWRITES SIZE
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
6 /www.host11.ru/test/index@.html www.host11.ru /test/ Статьи о домашних животных 2018-11-25 09:40:55 2018-11-25 10:35:43 2018-11-25 10:36:31 3 1 18810
7 /www.host11.ru/test/category/id/16/index@.html www.host11.ru /test/category/id/16/ Породы кошек 2018-11-25 09:43:20 2018-11-25 10:44:10 2018-11-25 10:44:10 14 2 16572
8 /www.host11.ru/test/item/id/322/index@.html www.host11.ru /test/item/id/322/ Абиссинская кошка 2018-11-25 09:44:31 2018-11-25 10:31:04 2018-11-25 10:31:04 2 1 14468
А сами файлы кеша — в директории /bitrix/html_pages/
, для каждого домена — отдельная поддиректория типа www.domain.ru
.