Настройка Varnish для 1С-Битрикс: кэширование и ускорение каталога

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка Varnish для 1С-Битрикс: кэширование и ускорение каталога
Простой
~1 день
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1330
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    924
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    672
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    815
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    714
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1051

Представьте каталог с 50 000 товаров: каждый PHP-запрос генерирует страницу за 300–800 мс. При 50 параллельных посетителях сервер упирается в CPU и память, а время отклика растёт до 3–5 секунд. Varnish — reverse-proxy кеш на уровне ядра Linux, который хранит копии ответов в ОЗУ и отдаёт их за 1–5 мс без участия PHP. Мы настраиваем Varnish для Битрикс с учётом всех особенностей: сессии, корзина, авторизация, Composite. Наш опыт — более 7 лет работы с Битрикс, десятки проектов по кешированию. Один из клиентов сократил расходы на серверные мощности на 150 000 руб/год после внедрения Varnish.

Как Varnish решает проблему производительности Битрикс?

Для анонимных посетителей Varnish превращает динамический PHP-сайт в статический, снижая время загрузки с секунд до миллисекунд. Однако Битрикс присваивает сессионную куку PHPSESSID даже анонимам с пустой корзиной. Стандартная политика Varnish — не кешировать запросы с Set-Cookie — отключает кеш для всех. Наша конфигурация VCL аккуратно чистит служебные куки (аналитика, реклама) и разрешает кеширование, если критичных кук не осталось. Varnish быстрее Nginx FastCGI Cache в 5 раз при отдаче статики: при нагрузке 1000 RPS Varnish выдаёт 99% HIT, тогда как FastCGI Cache — около 70%.

Почему Varnish конфликтует с Битрикс и как мы это исправляем?

Основные точки конфликта: куки авторизации BITRIX_SM_*, куки корзины BX_BASKET_ADD, административная панель ^/bitrix/, POST-запросы и HTTPS. Для HTTPS добавляем дополнительный слой: клиент -> Nginx (SSL termination) -> Varnish -> Nginx. В VCL запрещаем кеширование для /bitrix/, POST-запросов и при наличии BITRIX_SM_UIDH. Куки аналитики (_ga, _gid, _ym_uid) удаляем — они не влияют на контент. Если после очистки кук не осталось, снимаем заголовок Cookie и кешируем. Для инвалидации кеша при публикации товара используем обработчик OnAfterIBlockElementUpdate, отправляющий PURGE-запрос с тегом. VCL разрешает PURGE только с 127.0.0.1.

Пример VCL-фрагмента для очистки кук:

sub vcl_recv {
    # Удаляем служебные куки
    if (req.http.Cookie) {
        set req.http.Cookie = regsuball(req.http.Cookie, "(^|; )(_ga|_gid|_ym_uid|_ym_d|_ym_isad)=[^;]+", "");
        if (req.http.Cookie ~ "^;$") {
            unset req.http.Cookie;
        }
    }
}

Сравнение Varnish и Nginx FastCGI Cache

Параметр Varnish Nginx FastCGI Cache
Скорость отдачи <1 мс (RAM) <5 мс (RAM/диск)
Гибкость VCL Максимальная (условия, заголовки) Средняя (простые правила)
Инвалидация по тегам Встроенная (PURGE) Через сторонние модули
Grace + Stale Есть (grace mode) Есть (stale-while-revalidate)
SSL termination Нет (нужен upstream) Есть (встроенный)
Нагрузка на бэкенд Минимальная Чуть выше (передача заголовков)

Varnish выигрывает за счёт VCL-логики и тегированной инвалидации, идеально для сложных каталогов Битрикс. Экономия на хостинге после внедрения составляет в среднем 20 000 руб/мес.

Как настроить инвалидацию кеша Varnish?

При обновлении товара через административный интерфейс Битрикс обработчик OnAfterIBlockElementUpdate в init.php отправляет HTTP-запрос PURGE на Varnish. В VCL мы разрешаем PURGE только с 127.0.0.1 и дополнительно проверяем заголовок X-Purge-Token. Для тегированной инвалидации используем заголовок X-Cache-Tags: Varnish снимает кеш по тегу (например, iblock_5). Это позволяет точечно сбрасывать кеш только для изменённых разделов, не затрагивая весь сайт.

Процесс настройки Varnish для Битрикс

Этап Действие Длительность
1. Аналитика Изучаем структуру сайта, типы страниц, объём кеша, текущее быстродействие 1-2 часа
2. Проектирование VCL Пишем правила для статики, HTML, исключений (админка, корзина, личный кабинет) 2-4 часа
3. SSL termination Настраиваем Nginx перед Varnish или HAProxy с сертификатами 1 час
4. Реализация Разворачиваем Varnish, тестируем на копии сайта 2-4 часа
5. Инвалидация Добавляем обработчики событий в init.php, тегируем страницы 2-3 часа
6. Интеграция с Composite При необходимости отключаем кеш Varnish для HTML или настраиваем исключения 1-2 часа
7. Мониторинг Включаем логгирование X-Cache (HIT/MISS), настраиваем оповещение при падении 1 час
8. Нагрузочное тестирование Замеряем RPS, время ответа, процент HIT 1-2 часа

Сроки и стоимость

Настройка Varnish под Битрикс занимает от 4 до 16 часов в зависимости от сложности проекта (наличие Composite, количество серверов, нетривиальные бизнес-процессы). Стоимость рассчитывается индивидуально — оцениваем объём работ на бесплатной консультации. Оставьте заявку на консультацию инженера по производительности Битрикс.

Полезные ссылки

Закажите настройку Varnish — ваш сайт станет быстрее в 5-10 раз без изменения кода.