Дата последнего изменения: 19.08.2021
Если возникла потребность сбросить кеш, то рекомендуется это сделать с помощью ссылки Сбросить кеш на странице настроек.
При изменении шаблона сайта рекомендуется сбрасывать уже созданный композитный кеш. Это можно сделать с помощью запуска агентов из cron. Создан специальный файл cron_html_pages.php, который надо запустить. Он лежит по адресу: www/bitrix/modules/main/tools/cron_html_pages.php
.
php -f /path/to/site/bitrix/modules/main/tools/cron_html_pages.php 10
Не рекомендуется сброс кеша вручную путём удаления папки с кешем страниц /bitrix/html_pages/<domain>/
. В этом случае возможна ситуация, когда кеш перестанет создаваться, если до сброса кеша произошло превышение квоты на композитный кеш. По логу эту ошибку отследить не удастся. Если всё же вы прибегаете к этой операции, то одновременно с этим очистите содержимого файла bitrix/html_pages/.enabled
, чтобы сбросить статистику.
Для сброса кеша с помощью API необходимо использовать метод \Bitrix\Main\Data\StaticHtmlCache:
$staticHtmlCache = \Bitrix\Main\Data\StaticHtmlCache::getInstance(); $staticHtmlCache->deleteAll();
Если вызвать метод setAutoUpdate(false)
, то на странице не будет аяксового хита вообще. В этом случае setAutoUpdateTTL
позволяет указать время сброса кеша. Этот способ - аналог настроек в админке, только для конкретной страницы.
Пример использования рассмотрим на примере шаблона компонента Корзина. Код разметки аналогичен первому варианту разметки шаблона компонента Авторизация, но дополнительно указано методом setBrowserStorage использование браузера как локального хранилища динамичного контента. Это нужно в случаях когда пользователь уже ходил по интернет-магазину, и положил в корзину какое-то число товаров. В этом случае при загрузке страницы система будет использовать кеш браузера и отобразит последнее число товаров этого пользователя до момента получения актуальных данных с веб-сервера.
Данные в локальном хранилище:
Контент динамических областей пишется в SQL-базу. Но не по умолчанию, а по указанию:
$frame = $this->createFrame()->begin(); $frame->setBrowserStorage(true);
Если необходимо, чтобы кешировался весь контент шаблона и потом обновлялся, то необходимо весь код шаблона вставить в $this->createFrame()->begin();
. В таком случае вся информация будет кешироваться и затем обновляться на втором хите:
$frame = $this->createFrame()->begin(); // статический и динамический контент $frame->end();
\Bitrix\Main\Data\StaticHtmlCache::getInstance()->markNonCacheable();