Главная » Разработка Битрикс » Полезное » Как очистить кеш в Битрикс: все способы

Как очистить кеш в Битрикс: все способы

Виды кеша в Битрикс и способы их сброса: компоненты, композит, управляемый кеш, OPcache

«Я поменял данные, а на сайте всё по-старому» — самая частая жалоба на форумах о Битрикс, и почти всегда причина в кеше. Проблема в том, что кешей в системе несколько разных, и способ сброса зависит от того, какой именно кеш держит старые данные.

Виды кеша в Битрикс

Вид кешаЧто хранит
Кеш компонентовРезультат работы отдельных компонентов на страницах
Управляемый кеш (тегированный)Тот же кеш компонентов, но с автосбросом по тегам
Композитный кешГотовые HTML-страницы целиком
HTML-кеш (акселератор)Схож с композитным, устаревший механизм в некоторых версиях
Кеш менюСобранная структура навигации
OPcacheСкомпилированный код PHP, не связан с данными сайта
Кеш браузера посетителяЛокальная копия у самого пользователя

Первый шаг диагностики — понять, какой из них держит устаревшие данные, а не сбрасывать всё подряд наугад.

Сброс через административную часть

Раздел Настройки → Инструменты → Очистка кеша сбрасывает основные виды разом: файловый кеш, управляемый кеш, кеш меню. Это самый простой способ, подходящий в большинстве случаев, когда неясно, какой именно кеш виноват.

Нужна помощь с Битрикс?





    Сброс композитного кеша отдельно

    Композит хранит готовые HTML-файлы страниц, и общая очистка кеша не всегда затрагивает их. Композитный кеш сбрасывается отдельной кнопкой в том же разделе инструментов или автоматически — при изменении связанных данных, если управляемый кеш настроен корректно.

    Сброс из кода

    <?php
    
    use Bitrix\Main\Data\Cache;
    use Bitrix\Main\Application;
    
    // сброс конкретного кеша по идентификатору и пути
    $cache = Cache::createInstance();
    $cache->clean($cacheId, $cachePath);
    
    // сброс по тегу — если использовался тегированный кеш
    $taggedCache = Application::getInstance()->getTaggedCache();
    $taggedCache->clearByTag('my_custom_tag');
    
    // полная очистка всего файлового кеша
    BXClearCache(true);

    BXClearCache(true) — самый радикальный вариант, очищающий весь файловый кеш сайта целиком. Использовать его стоит осознанно: на большом сайте после такой очистки резко возрастает нагрузка, пока кеш не наполнится заново.

    Автоматический сброс при изменении данных

    Если кеш компонента настроен в режиме «Авто» с использованием управляемого кеша, повторный ручной сброс обычно не требуется — система сама инвалидирует кеш при изменении связанных данных через штатное API. Проблема возникает, когда данные меняются в обход API — прямыми запросами к базе, — тогда управляемый кеш не узнаёт об изменении и продолжает отдавать старую версию.

    Сброс кеша при разработке

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

    Сброс через панель хостинга или консоль

    # очистить директории кеша напрямую
    rm -rf /home/site/public_html/bitrix/cache/*
    rm -rf /home/site/public_html/bitrix/managed_cache/*
    rm -rf /home/site/public_html/bitrix/html_pages/*
    rm -rf /home/site/public_html/bitrix/stack_cache/*

    Прямое удаление файлов кеша с сервера — крайний случай, когда административная часть недоступна или сброс через неё не срабатывает. Папки создадутся заново автоматически при следующем обращении.

    OPcache — отдельная история

    Если после изменения PHP-кода на сервере правки не применяются, причина может быть не в кеше данных Битрикс, а в OPcache — кеше скомпилированного кода PHP. Он сбрасывается на уровне сервера, обычно перезапуском PHP-FPM, а не средствами административной части.

    Порядок диагностики «данные не обновились»

    1. Проверьте в режиме инкогнито — не кеш ли браузера показывает старую версию.
    2. Сбросьте кеш через административную часть целиком.
    3. Если не помогло — отдельно сбросьте композитный кеш.
    4. Проверьте, не менялись ли данные в обход API — тогда управляемый кеш не сработал сам.
    5. Если правился PHP-код компонента — проверьте OPcache на сервере.

    Частые ошибки

    • Сброс кеша выполняется вслепую, без понимания вида кеша. Тратится время на очистку не того, что реально держит старые данные.
    • Кеширование отключено «навсегда» после разработки. Забыли включить обратно — сайт работает медленнее, чем мог бы.
    • Композитный кеш не сбрасывается отдельно. Общая очистка не всегда затрагивает готовые HTML-страницы.
    • OPcache путают с кешем данных Битрикс. Разные механизмы, разные способы сброса.

    Итог

    В Битрикс существует несколько независимых видов кеша, и способ сброса зависит от того, какой из них держит устаревшие данные. Административная часть закрывает основные случаи одной кнопкой, композитный кеш иногда требует отдельного сброса, а изменения в обход штатного API вовсе не инвалидируют управляемый кеш автоматически — в таких случаях сброс придётся выполнять вручную, через код или прямое удаление файлов на сервере.

    Нужна помощь с Битрикс?

    Исправим ошибку, доработаем сайт, ускорим Битрикс или поможем разобраться с проблемой.

    Услуги
    Инструменты
    База знаний