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