Настраиваем кэширование при установленном фильтре — чтобы Умный фильтр не пересобирал всё каждый раз
Дата публикации: 24.06.2026

Настраиваем кэширование при установленном фильтре — чтобы Умный фильтр не пересобирал всё каждый раз

Хочу себе такие же кнопки
ccb9a536

Что вы получите уже настройкой кэширования умного фильтра

  • Сократите время отклика каталоги с фильтрами с 5‑10 секунд до < 1 секунды.
  • Снизите нагрузку на серверный процессор и базу данных, освободив ресурсы для реальных покупок.
  • Избегайте «пересборки» кэша каждый раз, когда пользователь меняет один пункт фильтра, и сохраняйте стабильную производительность даже при 10 000+ одновременных запросов.

1. Почему умный фильтр «пересобирает» всё каждый раз

Причина Что происходит Как это влияет
Отсутствие сегментации кэша Кэш хранится как один большой массив результатов запроса без учёта параметров фильтра. При любом изменении параметра система вынуждена полностью перестраивать кэш.
Неправильные TTL (время жизни) TTL слишком большой → устаревшие данные, слишком маленький → постоянные перезапросы. Слишком частая «пересборка» приводит к росту CPU и I/O.
Отсутствие «ключей» кэша Ключ генерируется только от URL‑строки, а не от набора параметров. Любой запрос, даже с небольшим изменением, считается новым и не использует уже готовый результат.

Умный фильтр в 1С‑Битрикс – это компонент, который собирает набор товаров по выбранным пользователем свойствам (цена, бренд, цвет и т.д.). По умолчанию он кэширует результат по всему набору параметров, а не по их частям. Поэтому при смене одного свойства (например, «цвет = красный») система заново формирует запрос к базе и пересоздаёт кэш полностью.


2. Принципы кэширования в 1С‑Битрикс

  1. Кеш‑тег (Cache‑Tag) – метка, привязанная к набору данных (например, iblock_id_12). При изменении любого элемента в инфоблоке все кэши с этим тегом автоматически инвалидируются.

  2. Кеш‑ключ (Cache‑Key) – уникальная строка, по которой хранится конкретный результат. Для умного фильтра он обычно выглядит так:

    filter_{IBLOCK_ID}_{SORT}_{PAGE}_{HASH}

    где HASH – md5‑хеш от параметров фильтра.

  3. TTL (Time‑to‑Live) – время, в течение которого кэш считается «свежим».

  4. Кеш‑механизмыFileCache, Memcached, Redis. Для тяжёлых магазинов рекомендуется Memcached или Redis, так как они работают в памяти и почти не используют диск.


3. Настройка кэширования фильтров в админке

  1. Перейдите в «Настройки → Настройки продукта → Настройки модулей → Битрикс: Модуль инфоблоков».

  2. Включите опцию «Кешировать результаты умного фильтра».

  3. Установите параметр «Таймаут кэша (секунды)». Для большинства каталогов достаточно 300 секунд (5 минут). Если ваш каталог меняется редко, можно увеличить до 1800 секунд.

  4. Выберите тип кэша:

    Тип кэша Плюсы Минусы
    FileCache Простой, без дополнительных сервисов Медленнее, нагрузка на диск
    Memcached Очень быстрый, масштабируемый Требует отдельный процесс
    Redis Поддержка сложных структур, TTL на уровне ключа Требует отдельный процесс
  5. Сохраните изменения.

Важно: Если вы используете Memcached или Redis, убедитесь, что они запущены на вашем VDS и в php.ini указаны соответствующие расширения (memcached.so, redis.so).


4. Тонкая настройка через .htaccess и php.ini

4.1. Управление заголовками Cache‑Control

# .htaccess
<IfModule mod_headers.c>
    # Кешировать статические файлы 1 год
    Header set Cache-Control "public, max-age=31536000"
</IfModule>

Для динамических страниц, генерируемых умным фильтром, лучше установить private и короткий max-age:

<IfModule mod_headers.c>
    Header set Cache-Control "private, max-age=300"
</IfModule>

4.2. Увеличение памяти для кэша

В php.ini задаём:

memory_limit = 512M
session.save_handler = memcached
session.save_path = "127.0.0.1:11211"

Если используете Redis:

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"

4.3. Оптимизация запросов к базе

Включаем SQL‑логирование только в режиме разработки, чтобы видеть, какие запросы генерирует фильтр:

$APPLICATION->SetAdditionalCachePath('/cache/');
$APPLICATION->SetCacheTime(300);

5. Примеры конфигураций для разных нагрузок

Нагрузка VDS‑параметры Кеш‑механизм TTL Комментарий
Низкая (до 100 посещений/день) 1 CPU, 1 ГБ RAM, SSD 20 ГБ FileCache 300 сек. Доступно в любой тарифе VDS.
Средняя (10 000 посещений/день) 2 CPU, 4 ГБ RAM, SSD 50 ГБ Memcached 600 сек. Требует отдельный процесс memcached.
Высокая (≥ 50 000 посещений/день) 4 CPU, 8 ГБ RAM, SSD 100 ГБ Redis 1800 сек. Позволяет хранить кэши по тегам и быстро их инвалидировать.
Пиковая (100 000+ посещений/день) 8 CPU, 16 ГБ RAM, NVMe 200 ГБ Redis + Memcached (fallback) 3600 сек. Комбинация дает резерв в случае отказа одного сервиса.

Где взять подходящий VDS? Мы сотрудничаем с провайдером, который предлагает готовые решения под любые задачи. Подробнее можно узнать на сайте VDSina.


6. Диагностика и мониторинг

Инструмент Что показывает Как использовать
Bitrix Cache Manager Текущий размер кэша, количество записей Откройте admin/cache.php и проверьте статистику.
memcached‑tool Статистика запросов, hit/miss echo "stats" | nc localhost 11211
redis‑cli Показатели keyspace_hits, keyspace_misses redis-cli info stats
NewRelic / Zabbix Нагрузка CPU, I/O, время выполнения запросов Настройте метрики bitrix.filter.time и bitrix.cache.hit_rate.

Ключевой индикаторHit‑Rate (процент попаданий в кэш). Если он падает ниже 70 %, стоит проверить:

  • Правильность генерации Cache‑Key (должен учитывать все параметры).
  • Слишком короткий TTL.
  • Частые изменения инфоблоков, вызывающие массовую инвалидизацию.

7. Частые ошибки и их исправление

Ошибка Причина Решение
Кеш‑ключ одинаковый для разных фильтров Хеш генерируется только от URL, без учёта GET‑параметров. В component.php добавить: \$filterHash = md5(serialize(\$arFilter)); и включить его в ключ.
TTL = 0 Кэш не сохраняется, каждый запрос идёт в БД. Установить минимум 60 секунд, лучше 300 секунд.
Memcached недоступен Сервис не запущен или порт закрыт. Проверить systemctl status memcached, открыть порт 11211 в firewall.
Слишком большой кэш‑ключ Хеш слишком длинный, превышает лимит 250 символов. Использовать crc32 вместо md5 или сократить набор параметров.
Инвалидизация по тегу происходит слишком часто Теги привязаны к часто меняющимся свойствам (например, просмотры). Перенести часто меняющиеся свойства в отдельный инфоблок без тегов.

8. Практика для закрепления

  1. Создайте собственный компонент умного фильтра, который будет кэшировать результаты по параметрам price и brand. Проверьте, что при изменении только price кэш не пересоздаётся полностью.
  2. Настройте на тестовом VDS Memcached и измерьте hit-rate до и после изменения TTL с 300 секунд на 600 секунд. Сравните результаты.
  3. Напишите функцию, генерирующую Cache‑Key из массива параметров фильтра. Убедитесь, что порядок параметров не влияет на итоговый ключ.
  4. Включите в php.ini расширение redis и настройте session.save_handler на Redis. Проверьте, что сессии сохраняются корректно после перезапуска Apache.
  5. Смоделируйте ситуацию, когда в инфоблоке меняется цена у 10 % товаров. Какой тег следует использовать, чтобы не инвалидировать весь кэш каталога? Опишите решение.

Поздравляем! Вы теперь знаете, как заставить умный фильтр работать быстро и экономно, используя правильные стратегии кэширования, настройки сервера и мониторинг. Применяйте полученные знания в реальных проектах, и ваш онлайн‑магазин будет радовать клиентов мгновенной реакцией даже при пиковых нагрузках.


Английский видеочат для путешествий
CamZamZam - онлайн фото с вебкамеры с эффектами
Чат рулетка 2026: Интерактивные элементы
Чат-рулетка: случайный собеседник в одно нажатие
Чат рулетка в 2026: будущие функции
Интерьер с использованием текстиля
Как настроить бэкапы для вашего сайта на хостинге Host.bg
Как настроить SSL-сертификат для сайта на Host.bg
Как обновить PHP на хостинге Host.bg
Как решить проблемы с загрузкой сайта на Host.bg
Какие бывают ЛОР болезни у детей
Калькулятор зарплаты SEO-оптимизатора
Кассовые терминалы с оплатой картами
Монетизация через платные услуги
Мск: ИП или ООО — лучший старт для бизнеса?
Общение в интернете без риска
Общение вживую через экран
Онлайн-связь
Оптимизация производительности баз данных на хостинге Host.bg
Ошибки при настройке хостинга и их решения
Проблемы с доменами и их решения на хостинге Host.bg
Сколько стоит биткоин
Сравнение ценовых диапазонов хостинга Host.bg
Сумки с бусинами
Техника для строительства загородных трасс
Трубная продукция для трубопроводных конструкций
Узбекские фильмы фэнтези
Видео рулетка 18+
Видеочат с случайным собеседником онлайн
Видеообщения по всему миру
рейтинг хостингов 2026 Быстрые VDS серверы