Битрикс. Автокеширование
19.12.2018
Теги: CMS • Web-разработка • Битрикс • Кеширование • Компонент • Настройка
Базовый элемент сайта в понятии Битрикс — это компонент. Каждая страница состоит из набора компонентов. И каждый компонент, если это не противоречит его логике, должен быть закеширован. Особенно это касается «тяжелых» компонентов, которые занимаются большими выборками данных и преобразованием этих данных.
Поскольку данная операция является достаточно часто используемой, то и интерфейс для кеширования в компонентах достаточно прост. Нужно просто код, который должен быть закеширован, обернуть в блок кода:
if ($this->StartResultCache()) { // Кешируемый код }
По умолчанию кеш зависит от набора входящих параметров. При изменении хотя бы одного параметра будет сформирован другой кеш для компонента. В качестве времени для кеша будет браться по умолчанию значение параметра CACHE_TIME
компонента. При желании его можно изменить, передав первый параметр методу StartResultCache()
:
if ($this->StartResultCache($cacheTime)) { // Кешируемый код }Также, помимо параметров, можно еще и добавить зависимостей к идентификатору кеша с помощью второго параметра метода. Например, чтобы сделать кеш зависимым от группы пользователя, можно использовать следующую конструкцию:
if ($this->StartResultCache(false, $GLOBALS['USER']->GetGroups())) { // Кешируемый код }
Автокеширование появилось в 6-й версии Битрикс и отличается от стандартного кеширования компонентов только тем, что может выключаться глобально на весь сайт одной кнопкой в панели управления — «Настройки • Настройки продукта • Автокеширование»:
В настройках каждого компонента можно выбрать тип кеширования:
A
— «Авто + Управляемое»: кеш обновляется по истечении времени кеширования (Авто) или при изменении данных (Управляемое)Y
— «Кешировать»: кеш обновляется по истечении времени кешированияN
— «Не кешировать»: кеширования нет в любом случае
При выборе «Авто + Управляемое» для всех компонентов, кеширование можно будет включить для всего сайта сразу. Не нужно заходить в настройки каждого компонента и выбирать «Кешировать». Соответственно, и выключить кеширование для всего сайта можно одним кликом в панели управления. Как правило, на этапе разработки автокеширование выключено, и включается перед запуском сайта.
Тип кеширования «Авто» ничем не отличается от обычного кеширования — кеш обновляется через заданный промежуток времени, который задается в настройках. «Управляемый» кеш обновляется, когда данные, с которыми работает компонент, изменились. Например, компонент показывает элементы инфоблока — после того, как данные инфоблока изменились — кеш теряет актуальность.
Суть управляемого кеша в том, чтобы пометить какой-то кеш каким-то тегом и иметь возможность по этому тегу очищать этот кеш. Чтобы автоматически удалить кеш компонента при изменении данных инфоблока, внутри методов Fetch()
и GetNext()
, отвечающих за выборку элементов и разделов, есть регистрация тега вида
'iblock_id_' . $res['IBLOCK_ID']
А внутри методов Add()
, Update()
и Delete()
, которые отвечают за изменение разделов и элементов инфоблока, есть код очистки кешей, связанных с этим тегом. Таким образом, если компонент использует «Управляемое» кеширование — на сайте всегда будет актуальная информация.
Поиск: CMS • Web-разработка • Битрикс • Кеширование • Компонент • Настройка