Кэширование в статичные файлы (зеркалирование)

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

Информацию об управлении кэшированием в статичные файлы см. в разделе Закладка «Кэширование» в управлении сайтами.

Исключение страниц из кэша

Мы не рекомендуем кэшировать в статичные файлы частоизменяемые разделы и разделы с динамическим содержимым. Рекомендуется исключить их кэширования в статичные файлы следующие разделы:

Игнорирование GET-параметров

Статичный кэш игнорирует GET-параметры, заданные в опции availableGetVariables конфигурационного файла ядра. Добавить собственные параметры, которые следует игнорировать, вы можете в bootstrap.php методами Cache_Static::ignoreQuery(string) для одного параметра:

Core::moduleIsActive('cache') && Cache_Static::ignoreQuery('parameter');

или методом Cache_Static::ignoreQueries(array) для нескольких параметров:

Core::moduleIsActive('cache') && Cache_Static::ignoreQueries(array('parameter', 'foo', 'bar'));

Внешнее управление возможностью кэшировать в статичные файлы

Вы можете выполнить собственные проверки и, при необходимости, запретить кэширование такой страницы одним из следующих вариантов:

1. Запрет через явное указание

Core_Page::instance()->staticCache(FALSE);

2. Использовать хук Core_Command_Controller_Default.onCheckCache, который если вернет FALSE, то кэширование не состоится.

* с версии 7.1.5.

Согласие с cookies

Мы рекомендуем сохранять согласие с cookies в куке _hccagree, при наличии этой куки статичный кэш не будет использоваться и будут отображаться страницы уже без выводимого согласия.

Особенности использования

Кэширование в статичные файлы используется только для неавторизированных посетителей.

Для обновления краткой корзины, в коде макета контроллеру показа корзины необходимо вызывать метод refreshLittleCart(), он динамически запросит актуальную корзину после отображения страницы, пример:

<?php
// Краткая корзина
if (Core::moduleIsActive('shop'))
{
	$Shop_Cart_Controller_Show = new Shop_Cart_Controller_Show(
		Core_Entity::factory('Shop', 1)
	);
	$Shop_Cart_Controller_Show
		->xsl(
			Core_Entity::factory('Xsl')->getByName('МагазинКорзинаКраткая')
		)
		->couponText(
			Core_Array::get(Core_Array::getSession('hostcmsOrder', array()), 'coupon_text')
		)
		->show()
		->refreshLittleCart();
}
?>

Не нашли ответ на свой вопрос в документации? Направьте обращение в службу поддержки или онлайн чат.