Назад

Очистка кэша в 1С-Битрикс программным способом

Главная
Блог
Очистка кэша в 1С-Битрикс программным способом

Зачем нужна программная очистка кэша?

При работе с 1С-Битрикс кэширование ускоряет загрузку страниц, но иногда данные устаревают. Ручная очистка через админку не всегда удобна, особенно при:

  • Массовых импортах (товары, цены, остатки)

  • Автоматических процессах (CRON, агенты)

  • Частых обновлениях (акции, новости)

  • Разработке (чтобы изменения сразу отображались)

Программная очистка кэша решает эти проблемы, автоматизируя процесс.

Полная очистка кэша в Битрикс (PHP-функция)

1. Базовая очистка (файловый кэш, ManagedCache, стековый и композитный кэш)

function clearBitrixCache() {
    // Очистка файлового кэша
    BXClearCache(true);
    
    // Очистка ManagedCache (кэш в БД, memcached/redis)
    if (class_exists('\Bitrix\Main\Data\ManagedCache')) {
        (new \Bitrix\Main\Data\ManagedCache())->cleanAll();
    }
    
    // Очистка стекового кэша
    if (class_exists('\CStackCacheManager')) {
        (new \CStackCacheManager())->CleanAll();
    }
    
    // Очистка композитного кэша (статического HTML)
    if (class_exists('\Bitrix\Main\Composite\Page')) {
        \Bitrix\Main\Composite\Page::getInstance()->deleteAll();
    }
    
    return true;
}

2. Дополнительная очистка (изображения, CSS/JS, CDN)

function clearExtendedBitrixCache() {
    clearBitrixCache(); // Базовая очистка
    
    // Очистка кэша ресайза изображений
    if (is_dir($_SERVER['DOCUMENT_ROOT'] . '/upload/resize_cache')) {
        BXClearCache(true, '/upload/resize_cache');
    }
    
    // Очистка оптимизированных CSS/JS (если включено ускорение сайта)
    if (class_exists('\Bitrix\Main\Page\Asset')) {
        \Bitrix\Main\Page\Asset::getInstance()->removeAll();
    }
    
    // Обновление CDN (если используется)
    if (class_exists('\Bitrix\Main\Composite\Helper')) {
        \Bitrix\Main\Composite\Helper::updateCDNConfig();
    }
    
    return true;
}

3. Обработка ошибок и логирование

Чтобы отслеживать проблемы, добавьте логирование:

function clearBitrixCacheWithLog() {
    try {
        clearExtendedBitrixCache(); // Используем расширенную очистку
        AddMessage2Log('Кэш успешно очищен', 'cache_clear');
        return true;
    } catch (Exception $e) {
        AddMessage2Log('Ошибка очистки кэша: ' . $e->getMessage(), 'cache_clear');
        return false;
    }
}

Где использовать эти функции?

1. В обработчиках событий

Пример: очистка кэша после импорта товаров.

AddEventHandler('catalog', 'OnAfterProductUpdate', 'clearBitrixCacheWithLog');

2. В агентах (по расписанию)

Настройте агент в Админке → Инструменты → Агенты.

// Агент для очистки кэша раз в сутки
function clearCacheAgent() {
    clearBitrixCacheWithLog();
    return "clearCacheAgent();"; // Планируем повторный запуск
}

3. В CRON-задачах

Добавьте в cron.php или отдельный скрипт:

if (date('H') >= 2 && date('H') <= 4) { // Очистка ночью
    clearBitrixCacheWithLog();
}

Рекомендации по оптимизации

Для высоконагруженных сайтов:

  • Очищайте кэш постепенно (по разделам, а не весь сразу).

  • Используйте очередь задач (например, через \Bitrix\Main\Queue).

Для CDN:

  • Если сайт использует Cloudflare или другой CDN, может потребоваться дополнительный API-вызов для сброса кэша.

Для разработки:

  • Добавьте очистку кэша в dev-режиме автоматически.

Вывод

Программная очистка кэша в 1С-Битрикс избавляет от ручных действий и поддерживает актуальность данных. Используйте готовые функции в агентах, CRON или обработчиках событий для автоматизации.

Дополнительные материалы:

Внедрите эти решения, и ваш сайт будет работать быстрее без устаревших данных!

Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Читайте по теме
Все статьи
Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Все статьи