🧱 Суть
Кеширование компонентов – механизм, позволяющий сохранять результат работы компонента и повторно использовать его без выполнения одинаковых запросов к базе данных.
При первом открытии страницы компонент:
- получает данные;
- формирует HTML;
- сохраняет результат в кеш.
При следующих запросах Битрикс может сразу вернуть сохранённый результат, пропустив выполнение компонента.
Это значительно снижает нагрузку на сервер и ускоряет загрузку страниц.
📦 Проблема
Без кеширования каждый запрос к странице приводит к:
- повторному выполнению PHP-кода;
- повторным SQL-запросам;
- повторной обработке данных;
- повторному формированию HTML.
При высокой посещаемости это заметно увеличивает нагрузку на сервер.
✅ Решение
Использовать встроенное кеширование компонентов. Если данные не изменились, компонент загрузит их из кеша вместо повторного выполнения.
💻 Код
Как включить кеширование
Большинство стандартных компонентов поддерживают параметры кеширования.
Например:
<?php
$APPLICATION->IncludeComponent(
"bitrix:news.list",
"",
[
"CACHE_TYPE" => "A",
"CACHE_TIME" => 3600,
]
);
?>Здесь:
CACHE_TYPE– режим кеширования;CACHE_TIME– время хранения кеша (в секундах).
Параметр CACHE_TYPE
Основные режимы:
"CACHE_TYPE" => "A"или
"CACHE_TYPE" => "Y"или
"CACHE_TYPE" => "N"Где:
A– использовать настройки системы (рекомендуется);Y– кешировать всегда;N– отключить кеширование.
Параметр CACHE_TIME
Определяет срок хранения кеша.
Например:
"CACHE_TIME" => 3600означает:
1 часПосле истечения времени компонент заново получит данные и обновит кеш.
Как работает кеширование
Последовательность работы:
Запрос страницы
│
▼
Есть актуальный кеш?
│ │
Да Нет
│ │
▼ ▼
Вернуть Выполнить
готовый компонент
HTML │
▼
Сохранить кешЕсли кеш существует и не устарел, обращения к базе данных не происходит.
Что кешируется
В большинстве компонентов кешируется:
- результат выполнения
component.php; - массив
$arResult; - итоговый HTML шаблона.
Это позволяет практически мгновенно отдавать страницу при повторных запросах.
Автоматический сброс кеша
При изменении данных Битрикс часто самостоятельно очищает кеш.
Например:
- изменение элемента инфоблока;
- добавление новой новости;
- удаление записи.
Поэтому пользователю обычно не приходится очищать кеш вручную.
Очистка кеша
Если необходимо, кеш можно очистить через административную панель.
Например:
Настройки
↓
Производительность
↓
Очистка файлов кешаИли очистить только кеш конкретного компонента программно.
Собственное кеширование
При разработке собственных компонентов можно использовать класс:
\Bitrix\Main\Data\CacheПример:
use Bitrix\Main\Data\Cache;
$cache = Cache::createInstance();Он позволяет самостоятельно управлять созданием и использованием кеша.
Когда использовать
Кеширование особенно полезно для компонентов, которые:
- получают данные из базы;
- редко изменяются;
- выводятся на каждой странице;
- содержат большое количество элементов.
Например:
- новости;
- каталог товаров;
- меню;
- список разделов;
- популярные статьи.
Частые ошибки
Полностью отключать кеш
Плохо:
"CACHE_TYPE" => "N"Без необходимости это создаёт лишнюю нагрузку на сервер.
Слишком маленькое время кеширования
Например:
"CACHE_TIME" => 5Компонент будет практически постоянно пересоздавать кеш.
Слишком большое время кеширования
Например:
"CACHE_TIME" => 31536000(1 год)
Пользователи могут долго видеть устаревшие данные.
Не учитывать персональные данные
Не рекомендуется кешировать информацию, которая отличается для каждого пользователя:
- корзину;
- личный кабинет;
- имя авторизованного пользователя.
Для таких данных используются специальные механизмы (например, композитный режим и динамические области).
Путать кеширование компонента и браузера
Кеш компонента хранится на сервере и ускоряет выполнение PHP.
Кеш браузера хранит статические ресурсы (CSS, JS, изображения) и работает независимо.
🎯 Вывод
- Кеширование компонентов уменьшает количество запросов к базе данных
- Основные параметры –
CACHE_TYPEиCACHE_TIME - При наличии актуального кеша компонент не выполняется повторно
- Большинство стандартных компонентов поддерживают кеширование “из коробки”
- Грамотная настройка кеша значительно повышает производительность сайта
- Для собственных компонентов можно использовать класс
\Bitrix\Main\Data\Cache
🔗 Связано
- Битрикс. Компоненты Bitrix: что это и как работают
- Битрикс. Вызов компонентов через IncludeComponent()
- Битрикс. Параметры компонентов
- Битрикс. template.php
- Битрикс. result_modifier.php
- Битрикс. Жизненный цикл страницы Bitrix
- PHP. Производительность PHP и кэширование
- PHP. Работа с файлами и файловой системой