Инструкция по автоматическому сбросу кэша сайта на CMS Bitrix

2 июня, 2025 admin Comments Off

Цель: Настроить автоматический сброс неиспользуемого кэша и полное обновление кэша на сайте компании с использованием CMS Bitrix.


 

Настройка сброса неиспользуемого кэша

Для постоянного сброса неиспользуемого кэша на сайте, необходимо создать агент, который будет выполняться регулярно.

Добавление функции для сброса неиспользуемого кэша

В файле /bitrix/php_interface/init.php создайте следующую функцию:

function ClearUnusedCacheAgent() {
    // Сбрасываем только неиспользуемый кэш
    BXClearCache(false);

    // Логирование выполнения (опционально)
    file_put_contents(
        $_SERVER['DOCUMENT_ROOT'] . '/bitrix/cache/unused_cache_log.txt',
        "Unused cache cleared at " . date('Y-m-d H:i:s') . PHP_EOL,
        FILE_APPEND
    );

    // Возврат функции агента для повторного выполнения
    return "ClearUnusedCacheAgent();";
}

Добавление агента в админку

  1. Перейдите в Настройки → Настройки продукта → Агенты
  2. Нажмите “Добавить агент”

Укажите:

  1. Имя функции: ClearUnusedCacheAgent();
  2. Интервал выполнения: Минимум 5 минут (например, 300 секунд)
  3. Модуль: main


Настройка полного сброса кэша с периодичностью

Для полного сброса кэша раз в неделю добавьте следующую функцию и агент.

Добавление функции для полного сброса кэша

function ClearAllCacheAgent() {
    // Подключаем основной модуль
    if (!\Bitrix\Main\Loader::includeModule('main')) {
        // Логируем ошибку, если модуль не загружен
        file_put_contents(
            $_SERVER['DOCUMENT_ROOT'] . '/upload/error_log.txt',
            "Module 'main' not loaded at " . date('Y-m-d H:i:s') . PHP_EOL,
            FILE_APPEND
        );
        return false; // Завершаем выполнение, если модуль не загружен
    }

    try {
        // Сброс HTML-кэша
        BXClearCache(true);

        // Сброс кэша компонентов
        $cache = \Bitrix\Main\Data\Cache::createInstance();
        $cache->cleanDir();

        // Сброс управляемого кэша
        global $CACHE_MANAGER;
        if (is_object($CACHE_MANAGER)) {
            $CACHE_MANAGER->CleanAll();
        } else {
            // Логируем ошибку, если объект $CACHE_MANAGER не существует
            file_put_contents(
                $_SERVER['DOCUMENT_ROOT'] . '/upload/error_log.txt',
                "CACHE_MANAGER is not initialized at " . date('Y-m-d H:i:s') . PHP_EOL,
                FILE_APPEND
            );
        }

        // Логируем успешное выполнение
        file_put_contents(
            $_SERVER['DOCUMENT_ROOT'] . '/upload/clear_cache_log.txt',
            "Cache cleared at " . date('Y-m-d H:i:s') . PHP_EOL,
            FILE_APPEND
        );

    } catch (\Exception $e) {
        // Логируем исключение, если оно произошло
        file_put_contents(
            $_SERVER['DOCUMENT_ROOT'] . '/upload/error_log.txt',
            "Error: " . $e->getMessage() . " at " . date('Y-m-d H:i:s') . PHP_EOL,
            FILE_APPEND
        );
        return false; // Завершаем выполнение при ошибке
    }

    // Возвращаем функцию агента для повторного запуска
    return "ClearAllCacheAgent();";
}

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

  1. Перейдите в Настройки → Настройки продукта → Агенты
  2. Нажмите “Добавить агент”

Укажите:

  1. Имя функции: ClearAllCacheAgent();
  2. Интервал выполнения: 1 раз в неделю (например, 604800 секунд)
  3. Модуль: main

3. Проверка и тестирование

  1. Убедитесь, что агенты создаются без ошибок.
  2. Выполните агенты вручную для тестирования через админку.
  3. Проверяйте журналы (unused_cache_log.txt и clear_cache_log.txt) после выполнения полных и частичных сбросов кэша.

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

Повышайте производительность вашего сайта с помощью автоматизации кэширования от Kamensky-lab — профессиональная настройка и поддержка для вашего бизнеса.