В админке очистка кэша находится в меню Настройки - Настройки продукта - Автокеширование.
//меню if($_REQUEST["cachetype"] == "menu") { $GLOBALS["CACHE_MANAGER"]->CleanDir("menu"); CBitrixComponent::clearComponentCache("bitrix:menu"); } //весь управляемый elseif($_REQUEST["cachetype"] == "managed") { $GLOBALS["CACHE_MANAGER"]->CleanAll(); $GLOBALS["stackCacheManager"]->CleanAll(); } //Все страницы HTML кеша elseif($_REQUEST["cachetype"] == "html") { $page = \Bitrix\Main\Composite\Page::getInstance(); $page->deleteAll(); } //Все elseif($_REQUEST["cachetype"] == "all") { BXClearCache(true); $GLOBALS["CACHE_MANAGER"]->CleanAll(); $GLOBALS["stackCacheManager"]->CleanAll(); $taggedCache = \Bitrix\Main\Application::getInstance()->getTaggedCache(); $taggedCache->deleteAllTags(); $page = \Bitrix\Main\Composite\Page::getInstance(); $page->deleteAll(); }
Для автоматизации сброса кеша создадим скрипт, выполнение которого повесим на крон.
Пример скрипта для очистки всего кеша:
$_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__FILE__)."/../../.."); $DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"]; define("NO_KEEP_STATISTIC", true); define("NOT_CHECK_PERMISSIONS",true); require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php'); @set_time_limit(0); BXClearCache(true); $GLOBALS["CACHE_MANAGER"]->CleanAll(); $GLOBALS["stackCacheManager"]->CleanAll(); $taggedCache = \Bitrix\Main\Application::getInstance()->getTaggedCache(); $taggedCache->deleteAllTags(); $page = \Bitrix\Main\Composite\Page::getInstance(); $page->deleteAll();
Создаем файл, например clearcache_cron.php, закидываем туда код.
Далее остается повесить выполнение этого файла на крон.