Войти

Что вас интересует?

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

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

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

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(), которые отвечают за изменение разделов и элементов инфоблока, есть код очистки кешей, связанных с этим тегом. Таким образом, если компонент использует «Управляемое» кеширование — на сайте всегда будет актуальная информация.

Комментрии
Комементариев нет, будьте первыми....
Оставить комментарий
Пожалуйста, введите ваше Имя.
Пожалуйста, введите ваш Email.
Пожалуйста, напишите комментарий.