Кэширование

Описание для версии 3.0

На данный момент, единственный вид кэширования на сайте - В кэширование непосредственно блоков данных (html вывода) и только в базу данных, отдельную таблицу.В 

Клас HolyCacheOut является классом-прослойкой, реально запросы выполняются классом, опеределяемым настройкой $_OPTIONS['CACHE_MODE'], по умолчанию "base", причем имя класса-драйвера будет HolyCache_значение_настройки. В комплекте с системой идут классыВ HolyCache_files (кэширует в файлы), HolyCache_memcached (использует memcached) и HolyCache_base (кэширует в базу - в данный момент даже мне кажется странным эта идея). Посмотреть их исходный код можно в файле api/cache_holy.php. Подробнее о настройках кэширования смотрите в соответствующем разделе.

Ручное использование

Пример использования:

	$cache_component = new HolyCacheOut($news_id, 150, "news");
	$result_cache = $cache_component->StartCacheOut();
	if ($result_cache) {
	//кэшируемый код вывода новостей
	$cache_component->EndCacheOut();
	};

ГдеВ 

$news_id - уникальный ключ кэша, строка.

150 - время кэширования, в секундахх.

"news" - дополнительный ключ. Если ключ соответствует какой либо таблице, то при операциях с ней все связанные кэши будут очищаться и заполняться заново.

На уровне компонентов

Во-первых, нужно поместить в настройку $_CONFIG['CACHE_SYSTEM'] либо "true", либо "always" (по-умолчанию - false). Во, вторых, для выбранного компонента нужно указать две настройки:

  • cache - либо true (кэширует если CACHE_SYSTEM=true, иначе нет), либо auto (кэширует если CACHE_SYSTEM=always, иначе нет). По умолчанию обычно false
  • cache_time - время кэширования в секундах, не обязательно, по-умолчанию 90 секунд.
  • cache_key - ручная установка ключа кэширования (уникального идентификатора).
  • Только в 3.1 -В inner_cache - используется для комплексных компонентов (news20,catalog20,cart20) - сам компонент не включает кэширование, а вот внутренним значение передает. Работает аналогично cache. В версии 3.2 удален из-за смены принципов работы компонентов - сейчас и без него все работает как надо.