Как автоматически чистить кэш Битрикс

Как автоматически чистить кэш в Битрикс

Битрикс
116
4 мин

Чистка кэша "Битрикс" - важная и регулярно необходимая операция для поддержания эффективной работы вашего сайта. В этой статье мы рассмотрим ключевые причины, по которым важно регулярно удалять кэш, и предложим надёжный метод настройки автоматической очистки кэша для сайтов на платформе "1С-Битрикс", которые были успешно применены нашими специалистами в Web-Comp.

Зачем регулярно очищать кэш "Битрикс"

Предотвращение переполнения дискового пространства

Накопление кэша может со временем привести к его избыточному заполнению, что негативно сказывается на скорости работы сайта и может вызвать остановку сервера.

Обновление контента для пользователей

Кэшированные файлы могут мешать отображению актуальной версии страниц сайта, скрывая внесённые изменения.

Автоматическая очистка кэша на 1С-Битрикс

Шаги настройки

  1. В административной панели перейдите в "Настройки" → "Настройки продукта" → "Автокеширование".
  2. Откройте вкладку "Очистка файлов кеша" и выберите один из следующих вариантов:
    • Только устаревшие.
    • Все.
    • Меню.
    • Весь управляемый.
    • Все страницы HTML кеша.

Решение проблем с папкой /bitrix/cache/

Эта папка содержит файлы неуправляемого кэша, которая может расти в размерах. Для предотвращения проблем с правами на файлы и папки, установите следующие значения в скрипте /bitrix/php_interface/dbconn.php:

            
umask(000);
@umask(~BX_DIR_PERMISSIONS);
            
        

Добавление нового агента для удаления кэша

  1. Перейдите в "Настройки" → "Настройки продукта" → "Агенты".
  2. В открывшейся вкладке настройте параметры агента следующим образом:
    • Функция агента: clean_expire_cache().
    • Сортировка: 100.
    • Интервал: 10.
    • Модуль: main.

Настройка файла init.php для автоматической очистки кэша

После настройки параметров в административной панели, вам необходимо внести изменения в файл /bitrix/php_interface/init.php. Эти изменения обеспечат корректную работу скрипта по очистке кэша, с учетом его выполнения на Cron или напрямую через хиты сайта.

            
<?
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; // Если на хитах, то не более 1 секунды

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; // Если на хитах, то не более 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 && $date_expire < $curentTime) {
                unlink($file);
            }
            if (time() >= $endTime) break;
        }
    }

    if (is_string($file)) {
        return "clean_expire_cache(\"" . $file . "\");";
    } else {
        return "clean_expire_cache();";
    }
}
            
        

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