«Я поменял данные, а на сайте всё по-старому» — самая частая жалоба на форумах о Битрикс, и почти всегда причина в кеше. Проблема в том, что кешей в системе несколько разных, и способ сброса зависит от того, какой именно кеш держит старые данные.
Виды кеша в Битрикс
| Вид кеша | Что хранит |
|---|---|
| Кеш компонентов | Результат работы отдельных компонентов на страницах |
| Управляемый кеш (тегированный) | Тот же кеш компонентов, но с автосбросом по тегам |
| Композитный кеш | Готовые 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, а не средствами административной части.
Порядок диагностики «данные не обновились»
- Проверьте в режиме инкогнито — не кеш ли браузера показывает старую версию.
- Сбросьте кеш через административную часть целиком.
- Если не помогло — отдельно сбросьте композитный кеш.
- Проверьте, не менялись ли данные в обход API — тогда управляемый кеш не сработал сам.
- Если правился PHP-код компонента — проверьте OPcache на сервере.
Частые ошибки
- Сброс кеша выполняется вслепую, без понимания вида кеша. Тратится время на очистку не того, что реально держит старые данные.
- Кеширование отключено «навсегда» после разработки. Забыли включить обратно — сайт работает медленнее, чем мог бы.
- Композитный кеш не сбрасывается отдельно. Общая очистка не всегда затрагивает готовые HTML-страницы.
- OPcache путают с кешем данных Битрикс. Разные механизмы, разные способы сброса.
Итог
В Битрикс существует несколько независимых видов кеша, и способ сброса зависит от того, какой из них держит устаревшие данные. Административная часть закрывает основные случаи одной кнопкой, композитный кеш иногда требует отдельного сброса, а изменения в обход штатного API вовсе не инвалидируют управляемый кеш автоматически — в таких случаях сброс придётся выполнять вручную, через код или прямое удаление файлов на сервере.
