Кэш Битрикс: Redis, Memcache и почему без них магазин тормозит

Кэш Битрикс: Redis, Memcache и почему без них магазин тормозит

Медленная загрузка каталога, тормозящая корзина и ошибки в час пик — частые спутники магазина на Битрикс, где не настроен кэш. Разбираем, чем отличаются Redis и Memcache, как их подключить, безопасно очистить кэш и в итоге ускорить сайт в два раза без замены кода и сервера.

Кэш Битрикс: Redis, Memcache и почему без них магазин тормозит

Владелец магазина одежды на Битрикс позвонил с жалобой: каталог открывается по восемь секунд, а страница оформления заказа и того дольше. Клиенты не дожидаются и уходят. Сервер мощный, код не меняли, разработчики разводят руками. Мы зашли на сервер и увидели типичную картину — файловый кэш по умолчанию, Redis не настроен, композитный кэш выключен. Магазин работал на трети своих возможностей. После внедрения полноценного кэша битрикс скорость выросла втрое, и клиенты перестали жаловаться. Сегодня разберём, как повторить этот результат и почему без кеширования ваш магазин обречён на торможение.

Зачем магазину на Битрикс кэш и почему файлового недостаточно

По умолчанию Битрикс использует файловый кэш: сериализованные данные складываются в директорию /bitrix/cache/. Для небольшого сайта-визитки этого хватает. Но когда каталог переваливает за тысячу товаров, а ежедневный трафик зашкаливает за несколько тысяч посетителей, дисковые операции становятся бутылочным горлышком. Каждый запрос к кэшу оборачивается чтением с диска, а при одновременной нагрузке диск просто не успевает обслужить всех.

Файловый кэш страдает от фрагментации, накапливает «мёртвые» файлы и со временем замедляет всю систему. К тому же он плохо масштабируется: если у вас несколько веб-серверов, синхронизировать файлы между ними крайне неудобно. Именно поэтому для растущего магазина жизненно необходим кэш в оперативной памяти — Redis или Memcache. Они хранят данные в RAM, отдавая результат за микросекунды вместо миллисекунд. Разница особенно заметна на страницах с умным фильтром и сложной выборкой, где без кеширования битрикс производительность падает до неприемлемых значений.

Redis битрикс настройка: быстрый старт за час

Схема подключения Redis в админке Битрикс и на сервере
Redis подключается за три шага: установка на сервер, настройка в php.ini, активация в админке Битрикс.

Redis — это быстрое хранилище «ключ-значение» в оперативной памяти. Битрикс поддерживает его из коробки, и настройка сводится к трём действиям. Первое — установите Redis на сервер. Для CentOS это yum install redis, для Ubuntu — apt install redis-server. После установки проверьте, что сервис запущен: systemctl status redis. Второе — добавьте расширение Redis для PHP. Обычно это пакет php-redis или php-pecl-redis. Перезапустите веб-сервер. Третье — в админке Битрикс перейдите в «Настройки» → «Производительность» → вкладка «Кеширование». Выберите Redis из списка и укажите параметры подключения: хост 127.0.0.1 и порт 6379. Сохраните настройки и проверьте, что на странице производительности появилась зелёная галочка напротив Redis.

После подключения Redis возьмёт на себя хранение данных кэша: меню, инфоблоков, результатов компонентов. Время ответа сервера (TTFB) обычно сокращается на 40–60%. Для магазина с активным умным фильтром это критично, потому что каждая генерация фильтра без кэша нагружает базу данных. Базовая redis битрикс настройка не требует сложного конфигурирования, но мы рекомендуем сразу задать maxmemory-policy allkeys-lru, чтобы при нехватке памяти автоматически удалялись старые ключи.

Memcache для битрикс: когда Redis не справляется

Сравнительная схема работы Redis и Memcache в инфраструктуре Битрикс
Memcache полезен, когда нужно кешировать большие объёмы сессий и распределять нагрузку между серверами.

Memcache — ещё один популярный сервер кеширования, который Битрикс также поддерживает. В отличие от Redis, он проще устроен и не умеет сохранять данные на диск. Но у него есть преимущества: он отлично работает с большими объёмами сессий и прекрасно масштабируется горизонтально. Если у вас несколько frontend-серверов, Memcache легко объединяется в пул, и сессии пользователей становятся доступны на всех узлах.

Настройка memcache для битрикс похожа на Redis: установите memcached, добавьте расширение PHP (php-memcached), запустите сервис и выберите Memcache в админке. Однако есть нюанс: Memcache не дружит с композитным кэшем Битрикс так же хорошо, как Redis. Композитный кэш требует возможности атомарных операций и хранения HTML-фрагментов, поэтому для него мы всегда рекомендуем Redis. Memcache же отлично справляется с кешированием данных инфоблоков, меню и особенно сессий. Часто оптимальным решением становится гибрид: Redis для композитного кэша и данных, Memcache для сессий и служебной информации.

Кэш битрикс очистить правильно: без сюрпризов для покупателей

Кнопка сброса кэша в админке Битрикс и иконка предупреждения
Правильная очистка кэша — это не просто нажатие одной кнопки, а продуманная последовательность действий.

Рано или поздно возникает необходимость сбросить кэш: после обновления модулей, изменения шаблонов или правки данных в 1С. Многие просто нажимают «Очистить кэш» в админке и идут пить кофе. А в это время сайт резко замедляется, потому что весь кэш приходится прогревать заново на живых посетителях. Кэш битрикс очистить нужно аккуратно, особенно если в магазине тысячи товаров и десятки тысяч позиций каталога.

Безопасный порядок действий такой: сначала очистите только кэш конкретных компонентов, которые вы меняли — для этого есть вкладка «Кеширование» в настройках модуля. Затем прогрейте ключевые страницы с помощью скрипта или через cron, запуская их раз в несколько минут в ночное время. Если сбрасываете весь кэш, делайте это в часы минимальной нагрузки, например в 4 утра. И обязательно настройте фоновый прогрев: curl-запросы к главной странице, каталогу и карточкам товаров. Так покупатели с утра увидят быстрый сайт, а не замедленную версию.

Кеширование битрикс производительность: что ещё влияет на скорость

График роста производительности Битрикс после включения композитного кэша и Redis
Композитный кэш вместе с Redis даёт максимальный прирост скорости на страницах каталога и карточках товаров.

Настройка Redis и Memcache — это только часть работы. Чтобы кеширование битрикс производительность действительно взлетела, включите композитный кэш. Он хранит полностью собранные HTML-страницы и выдаёт их без запуска PHP. Для авторизованных пользователей композитный кэш не работает, но для гостей он способен ускорить загрузку до десятых долей секунды. Включите его в «Настройки» → «Производительность» → «Композитный кэш», выбрав Redis в качестве хранилища.

Не забывайте про Opcache — он кеширует скомпилированный PHP-код и экономит процессорное время. Проверьте в php.ini параметры opcache.enable=1 и opcache.memory_consumption=128. Также регулярно мониторьте количество попаданий в кэш через панель производительности Битрикс. Если процент попаданий ниже 80%, значит, кэш сбрасывается слишком часто или объём памяти мал. Добавьте памяти или пересмотрите политику инвалидации.

Кэш — это не волшебная таблетка, а инструмент, который нужно настраивать под конкретный магазин. Но даже базовое внедрение Redis и композитного кэша способно сократить время загрузки в два-три раза. Если хотите, чтобы кешированием и производительностью вашего сервера занимались профессионалы, обращайтесь в Апельсин Код. Мы настроим Redis, Memcache и композитный кэш, а также проведём бесплатный аудит сервера. Подробности на support.orangecode.ru.

Мы аккуратно собираем действительно полезные материалы для собственников интернет-магазинов и интернет-маркетологов, касающиеся разработки и эксплуатации быстро масштабируемых e-commerce проектов.

Мы - рядом

У Вас есть проект? Давайте его обсудим!

Офисы:

г.Москва, ул.Люблинская, 42

г.Ростов-на-Дону, ул.Социалистическая, 74

Пишите на email

info@orangecode.ru

Телефон

+7 (918) 505 23 85

Оставьте заявку

Расскажите немного о Вашем проекте. Мы обязательно свяжемся с Вами и сделаем коммерческое предложение, от которого Вы не сможете отказаться!

Я согласен на обработку моих персональных данных в соответствии с Политикой конфиденциальности

Настоящим я выражаю согласие на обработку моих персональных данных, включая передачу третьим лицам, уполномоченным Orange Code для осуществления целей маркетинга, рекламы и изучения мнений группой компаний Orange Code. Я прочитал Политику Конфиденциальности и согласен с ее положениями. Я понимаю, что могу отозвать свое согласие, следуя по специальной ссылке.