Кеширование является одним из самых эффективных способов повышения производительности сайта на платформе 1С-Битрикс. Правильно настроенный кеш позволяет существенно сократить нагрузку на сервер, уменьшить количество SQL-запросов и значительно ускорить загрузку страниц для пользователей.
На крупных интернет-магазинах и корпоративных порталах грамотная настройка кеширования способна уменьшить время генерации страниц в несколько раз. В этой статье подробно рассмотрим все основные виды кеширования в Битрикс и способы их настройки.
Что такое кеширование
Кеширование — это процесс сохранения результатов работы системы для последующего быстрого использования.
Вместо того чтобы каждый раз:
- выполнять SQL-запросы;
- строить дерево разделов;
- загружать свойства товаров;
- генерировать HTML;
система сохраняет готовый результат и использует его повторно.
Это позволяет значительно ускорить работу сайта.
Как работает кеширование в Битрикс
При первом обращении к странице происходит:
- Выполнение PHP-кода.
- Обращение к базе данных.
- Формирование результата.
- Сохранение результата в кеш.
При последующих запросах Битрикс берет данные из кеша, минуя тяжелые операции.
Схема выглядит следующим образом:
Пользователь → Кеш → Результат
Если кеш отсутствует:
Пользователь → PHP → MySQL → Кеш → Результат
Какие виды кеширования существуют в Битрикс
В системе используется несколько уровней кеширования:
- компонентное кеширование;
- управляемый кеш;
- тегированный кеш;
- кеш меню;
- ORM-кеш;
- композитный сайт;
- PHP OPcache;
- Redis и Memcached.
Для максимальной производительности рекомендуется использовать сразу несколько механизмов.
Автокеширование компонентов
Наиболее распространенный вариант — кеширование компонентов.
Практически каждый стандартный компонент Битрикс поддерживает кеширование.
Пример:
$APPLICATION->IncludeComponent(
"bitrix:news.list",
"",
[
"CACHE_TYPE" => "A",
"CACHE_TIME" => "36000000"
]
);
Параметр CACHE_TYPE
Возможные значения:
| Значение |
Описание |
| A |
Авто |
| Y |
Включено |
| N |
Отключено |
Рекомендуется использовать:
"CACHE_TYPE" => "A"
Настройка времени жизни кеша
Параметр:
CACHE_TIME
определяет срок хранения данных.
Пример:
"CACHE_TIME" => "3600"
означает один час.
Для редко изменяемых данных можно использовать:
"CACHE_TIME" => "86400"
или даже несколько дней.
Чем дольше живет кеш, тем ниже нагрузка на сервер.
Управляемый кеш
Управляемый кеш (Managed Cache) является одной из ключевых технологий Битрикс.
Его особенность заключается в автоматическом сбросе кеша при изменении данных.
Например:
- изменился товар;
- обновился раздел;
- изменилась настройка инфоблока.
Система автоматически очищает только необходимые кешированные данные.
Это позволяет использовать большие сроки хранения кеша без риска отображения устаревшей информации.
Тегированный кеш
Тегированный кеш позволяет очищать кеш по определенным тегам.
Пример использования:
$taggedCache = \Bitrix\Main\Application::getInstance()->getTaggedCache();
$taggedCache->startTagCache($cachePath);
$taggedCache->registerTag('iblock_id_5');
$taggedCache->endTagCache();
При обновлении инфоблока система автоматически очистит связанный кеш.
Тегированный кеш активно используется внутри стандартных компонентов Битрикс.
Использование класса Cache
Для собственных разработок рекомендуется использовать класс Cache.
Подключение:
use Bitrix\Main\Data\Cache;
Пример:
$cache = Cache::createInstance();
if ($cache->initCache(3600, 'products_cache'))
{
$result = $cache->getVars();
}
elseif ($cache->startDataCache())
{
$result = getProducts();
$cache->endDataCache($result);
}
Такой подход позволяет значительно снизить нагрузку на базу данных.
Кеширование ORM-запросов
Современный ORM Битрикс поддерживает встроенное кеширование.
Пример:
$list = \Bitrix\Main\UserTable::getList([
'select' => ['ID', 'LOGIN'],
'cache' => [
'ttl' => 3600
]
]);
Где:
ttl
— время жизни кеша в секундах.
Это особенно полезно для часто используемых справочников и настроек.
Кеширование меню
Меню является одним из наиболее часто запрашиваемых элементов сайта.
Для него рекомендуется включать кеширование.
Пример:
"MENU_CACHE_TYPE" => "A",
"MENU_CACHE_TIME" => "3600"
На больших сайтах это позволяет значительно сократить количество запросов.
Композитный сайт
Композитный режим — отдельная технология ускорения Битрикс.
Принцип работы:
- страница сохраняется в готовом HTML-виде;
- пользователь получает ее практически мгновенно;
- динамические области загружаются отдельно.
Включить режим можно через:
Настройки → Композитный сайт
Для интернет-магазинов композитный режим считается обязательным.
Redis для кеширования
На крупных проектах файловый кеш постепенно становится узким местом.
Для решения проблемы используют Redis.
Пример настройки:
'cache' => [
'value' => [
'type' => 'redis',
'redis' => [
'host' => '127.0.0.1',
'port' => 6379
]
]
]
Преимущества Redis:
- хранение кеша в памяти;
- высокая скорость чтения;
- снижение нагрузки на SSD;
- ускорение очистки кеша.
Memcached
Альтернативой Redis является Memcached.
Он также позволяет хранить кеш в оперативной памяти.
Подходит для:
- высоконагруженных проектов;
- кластерных решений;
- интернет-магазинов с большим трафиком.
Однако в большинстве случаев Redis считается более функциональным решением.
Очистка кеша
Иногда требуется вручную очистить кеш.
Через административную панель:
Настройки → Производительность → Очистка файлов кеша
Также доступна очистка через код:
BXClearCache(true);
Однако злоупотреблять полной очисткой кеша не рекомендуется.
Автоматическая очистка кеша
При использовании управляемого кеша Битрикс самостоятельно очищает устаревшие данные.
Поэтому лучше избегать конструкций вида:
BXClearCache(true);
после каждого изменения данных.
Это может существенно снизить производительность сайта.
Типичные ошибки при настройке кеширования
Кеш отключен
Встречается на многих проектах после разработки.
Следует проверить параметры:
CACHE_TYPE
CACHE_TIME
Слишком короткое время жизни
Например:
"CACHE_TIME" => "60"
Такой кеш будет постоянно пересоздаваться.
Очистка всего кеша
Полный сброс кеша после каждого действия пользователя приводит к потере всех преимуществ кеширования.
Отсутствие Redis на крупных проектах
При высокой нагрузке файловая система становится узким местом.
Использование Redis позволяет решить эту проблему.
Как проверить эффективность кеширования
Для анализа производительности можно использовать:
- Монитор производительности Битрикс;
- PageSpeed Insights;
- GTmetrix;
- Lighthouse;
- инструменты разработчика браузера.
Следует контролировать:
- время генерации страницы;
- количество SQL-запросов;
- загрузку процессора;
- нагрузку на диск.
Рекомендации по настройке
Для большинства сайтов на Битрикс рекомендуется следующая схема:
- включить компонентное кеширование;
- использовать управляемый кеш;
- включить композитный режим;
- использовать Redis;
- включить OPcache;
- настроить CDN для статики;
- избегать полной очистки кеша.
Такой набор обеспечивает максимальную производительность системы.
Заключение
Кеширование является фундаментом производительности любого проекта на Битрикс. Правильная настройка компонентного кеша, управляемого кеширования, Redis и композитного режима позволяет существенно ускорить загрузку страниц, снизить нагрузку на сервер и улучшить пользовательский опыт. Для интернет-магазинов и крупных корпоративных порталов грамотная стратегия кеширования становится обязательным условием стабильной и быстрой работы сайта.