🧱 Суть

Кеширование компонентов – механизм, позволяющий сохранять результат работы компонента и повторно использовать его без выполнения одинаковых запросов к базе данных.

При первом открытии страницы компонент:

  • получает данные;
  • формирует 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

🔗 Связано