Битрикс. Автокеширование

19.12.2018

Теги: CMSWeb-разработкаБитриксКешированиеКомпонентНастройка

Базовый элемент сайта в понятии Битрикс — это компонент. Каждая страница состоит из набора компонентов. И каждый компонент, если это не противоречит его логике, должен быть закеширован. Особенно это касается «тяжелых» компонентов, которые занимаются большими выборками данных и преобразованием этих данных.

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

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-разработка • Битрикс • Кеширование • Компонент • Настройка

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.