Проблема многих сайтов на Битриксе - неочищенный кеш! Сайт постоянно складывал в кеш страницы, место начает заполняться, и приходиться постоянно очищать кеш в ручную. Знакомо? Давайте решим эту проблему Мой клиент решал эту проблему путем напоминания в телефоне - "Очистит кеш на сайте"! Да реально, каждую неделю заходил и очищал в ручную.
Бред! А если запустить рекламную кампанию, то трафик то увеличится, страниц в кеше станет еще больше, к тому же страница может измениться, а посетителю отдается старая, это в корне не верно, вот именно по этому я и решил переложить это все на cron, благо в bitrix API очень продумано, не зря старались, в итоге поразмыслив в dev, обнаружил функцию clean_expire_cache();, которую можно как раз использовать для этого.
Итак идем по пути /bitrix/php_interface/ и init.php создаем файл, если еще не создан, если создан, то добавляем ниже следующее:
function clean_expire_cache($path = "") {
if (!class_exists("CFileCacheCleaner")) {
require_once ($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/classes/general/cache_files_cleaner.php");
}
$curentTime = mktime();
if (defined("BX_CRONTAB") && BX_CRONTAB === true) $endTime = time() + 5; //Если на кроне, то работаем 5 секунд
else $endTime = time() + 1; //Если на хитах, то не более секунды
//Работаем со всем кешем
$obCacheCleaner = new CFileCacheCleaner("all");
if (!$obCacheCleaner->InitPath($path)) {
//Произошла ошибка
return "clean_expire_cache();";
}
$obCacheCleaner->Start();
while ($file = $obCacheCleaner->GetNextFile()) {
if (is_string($file)) {
$date_expire = $obCacheCleaner->GetFileExpiration($file);
if ($date_expire) {
if ($date_expire < $curentTime) {
unlink($file);
}
}
if (time() >= $endTime) break;
}
}
if (is_string($file)) {
return "clean_expire_cache(\"" . $file . "\");";
}
else {
return "clean_expire_cache();";
}
}
Далее переходим в админку bitrix и создаем агента на странице
Настройки > Настройки продукта > Агенты
Настраиваем так:
Функция clean_expire_cache();
Сортировка: 100
Интервал (сек): 10.
Вот и все.
Код работает циклично и возобновляется там где остановился, помимо этого предусмотрена работа на cron и на хитах. В скрипте помечен участок кода, можно изменить эти значения. Интервал также можно задать не 10 секунд, а минуту, к примеру.
C 2012 года являюсь Битрикс Программистом. Программист 1С:Битрикс – это веб-разработчик с узким профилем, который работает непосредственно с продукцией от компании 1С.