Медленная загрузка каталога, тормозящая корзина и ошибки в час пик — частые спутники магазина на Битрикс, где не настроен кэш. Разбираем, чем отличаются Redis и Memcache, как их подключить, безопасно очистить кэш и в итоге ускорить сайт в два раза без замены кода и сервера.
Кэш Битрикс: Redis, Memcache и почему без них магазин тормозит
Владелец магазина одежды на Битрикс позвонил с жалобой: каталог открывается по восемь секунд, а страница оформления заказа и того дольше. Клиенты не дожидаются и уходят. Сервер мощный, код не меняли, разработчики разводят руками. Мы зашли на сервер и увидели типичную картину — файловый кэш по умолчанию, Redis не настроен, композитный кэш выключен. Магазин работал на трети своих возможностей. После внедрения полноценного кэша битрикс скорость выросла втрое, и клиенты перестали жаловаться. Сегодня разберём, как повторить этот результат и почему без кеширования ваш магазин обречён на торможение.
Зачем магазину на Битрикс кэш и почему файлового недостаточно
По умолчанию Битрикс использует файловый кэш: сериализованные данные складываются в директорию /bitrix/cache/. Для небольшого сайта-визитки этого хватает. Но когда каталог переваливает за тысячу товаров, а ежедневный трафик зашкаливает за несколько тысяч посетителей, дисковые операции становятся бутылочным горлышком. Каждый запрос к кэшу оборачивается чтением с диска, а при одновременной нагрузке диск просто не успевает обслужить всех.
Файловый кэш страдает от фрагментации, накапливает «мёртвые» файлы и со временем замедляет всю систему. К тому же он плохо масштабируется: если у вас несколько веб-серверов, синхронизировать файлы между ними крайне неудобно. Именно поэтому для растущего магазина жизненно необходим кэш в оперативной памяти — Redis или Memcache. Они хранят данные в RAM, отдавая результат за микросекунды вместо миллисекунд. Разница особенно заметна на страницах с умным фильтром и сложной выборкой, где без кеширования битрикс производительность падает до неприемлемых значений.
Redis битрикс настройка: быстрый старт за час
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 не справляется
Memcache — ещё один популярный сервер кеширования, который Битрикс также поддерживает. В отличие от Redis, он проще устроен и не умеет сохранять данные на диск. Но у него есть преимущества: он отлично работает с большими объёмами сессий и прекрасно масштабируется горизонтально. Если у вас несколько frontend-серверов, Memcache легко объединяется в пул, и сессии пользователей становятся доступны на всех узлах.
Настройка memcache для битрикс похожа на Redis: установите memcached, добавьте расширение PHP (php-memcached), запустите сервис и выберите Memcache в админке. Однако есть нюанс: Memcache не дружит с композитным кэшем Битрикс так же хорошо, как Redis. Композитный кэш требует возможности атомарных операций и хранения HTML-фрагментов, поэтому для него мы всегда рекомендуем Redis. Memcache же отлично справляется с кешированием данных инфоблоков, меню и особенно сессий. Часто оптимальным решением становится гибрид: Redis для композитного кэша и данных, Memcache для сессий и служебной информации.
Кэш битрикс очистить правильно: без сюрпризов для покупателей
Рано или поздно возникает необходимость сбросить кэш: после обновления модулей, изменения шаблонов или правки данных в 1С. Многие просто нажимают «Очистить кэш» в админке и идут пить кофе. А в это время сайт резко замедляется, потому что весь кэш приходится прогревать заново на живых посетителях. Кэш битрикс очистить нужно аккуратно, особенно если в магазине тысячи товаров и десятки тысяч позиций каталога.
Безопасный порядок действий такой: сначала очистите только кэш конкретных компонентов, которые вы меняли — для этого есть вкладка «Кеширование» в настройках модуля. Затем прогрейте ключевые страницы с помощью скрипта или через cron, запуская их раз в несколько минут в ночное время. Если сбрасываете весь кэш, делайте это в часы минимальной нагрузки, например в 4 утра. И обязательно настройте фоновый прогрев: curl-запросы к главной странице, каталогу и карточкам товаров. Так покупатели с утра увидят быстрый сайт, а не замедленную версию.
Кеширование битрикс производительность: что ещё влияет на скорость
Настройка Redis и Memcache — это только часть работы. Чтобы кеширование битрикс производительность действительно взлетела, включите композитный кэш. Он хранит полностью собранные HTML-страницы и выдаёт их без запуска PHP. Для авторизованных пользователей композитный кэш не работает, но для гостей он способен ускорить загрузку до десятых долей секунды. Включите его в «Настройки» → «Производительность» → «Композитный кэш», выбрав Redis в качестве хранилища.
Не забывайте про Opcache — он кеширует скомпилированный PHP-код и экономит процессорное время. Проверьте в php.ini параметры opcache.enable=1 и opcache.memory_consumption=128. Также регулярно мониторьте количество попаданий в кэш через панель производительности Битрикс. Если процент попаданий ниже 80%, значит, кэш сбрасывается слишком часто или объём памяти мал. Добавьте памяти или пересмотрите политику инвалидации.
Кэш — это не волшебная таблетка, а инструмент, который нужно настраивать под конкретный магазин. Но даже базовое внедрение Redis и композитного кэша способно сократить время загрузки в два-три раза. Если хотите, чтобы кешированием и производительностью вашего сервера занимались профессионалы, обращайтесь в Апельсин Код. Мы настроим Redis, Memcache и композитный кэш, а также проведём бесплатный аудит сервера. Подробности на support.orangecode.ru.