Skip to content
mFilter
mFilter
Фасетная фильтрация для MODX 3 с поддержкой SEO URL
  1. Компоненты
  2. mFilter

Прогрев кэша

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

Зачем нужен прогрев

При первом открытии страницы каталога mFilter выполняет три тяжёлые операции:

  1. baseIds — получение списка всех ID товаров в категории
  2. filter values — вычисление доступных значений фильтров (бренды, цвета, размеры)
  3. suggestions — подсчёт количества товаров для каждого значения фильтра

Для больших каталогов (10 000+ товаров) это может занимать от 5 до 60 секунд. Прогрев выполняет эти операции заранее в фоне и сохраняет результаты в кэш.

Таблица конфигураций

КолонкаОписание
IDИдентификатор конфигурации
НазваниеИмя конфигурации
ElementСниппет получения данных (msProducts, pdoResources)
СтраницКоличество привязанных страниц каталога
АвтоПометка «Авто» если конфигурация создана автоматически
Последний прогревДата и длительность последнего прогрева
СтатусАктивна / Выключена

Создание конфигурации

Автоматическое

При первом посещении любой страницы каталога с фильтрами конфигурация создаётся автоматически. В таблице появится запись с пометкой Авто и привязкой к этой странице.

Ручное

  1. Нажмите Добавить конфигурацию
  2. Укажите название (необязательно — сгенерируется из element и даты)
  3. Выберите Element (msProducts, pdoResources и т.д.)
  4. Вставьте вызов сниппета в поле «Вызов сниппета» и нажмите Распарсить — параметры заполнятся автоматически
  5. Выберите страницы каталога в дереве ресурсов
  6. Нажмите Сохранить

Парсинг вызова сниппета

Поддерживаются три формата:

Fenom:

smarty
{'!mFilter'|snippet:['element' => 'msProducts', 'parents' => $_modx->resource.id, 'limit' => 12]}

MODX-тег:

[[!mFilter? &element=`msProducts` &parents=`5` &limit=`12`]]

JSON:

json
{"element": "msProducts", "parents": 5, "limit": 12}

Редактор конфигурации

Левая колонка

  • Название — произвольное имя для удобства
  • Element — сниппет получения данных (msProducts, pdoResources или другой)
  • Вызов сниппета — текстовое поле для вставки кода вызова и парсинга параметров
  • Параметры — таблица key-value с параметрами сниппета
  • Активна — включение/выключение конфигурации

Правая колонка

  • Дерево ресурсов — выбор страниц каталога (с lazy loading и кнопками массового выделения)

Подсказка

При отметке родительской категории все дочерние загружаются и отмечаются автоматически.

Запуск прогрева

Из админки (синхронно)

Нажмите Прогреть всё — прогрев выполнится в текущем запросе. Подходит для небольших каталогов или тестирования.

Через Scheduler (в фоне)

Нажмите Через Scheduler — создаётся задание в планировщике, которое выполнится по крону. Рекомендуется для больших каталогов.

Прогрев отдельной конфигурации

Нажмите иконку молнии в строке конфигурации — прогреет только эту конфигурацию.

Чекбокс «+ счётчики»

Включён по умолчанию. При прогреве дополнительно вычисляет и кэширует:

  • Значения фильтров (используются формой фильтров mFilterForm)
  • Фасетные счётчики (количество товаров для каждого значения)

Без этого чекбокса кэшируются только baseIds.

Рекуррентный прогрев

Таск mfl_warmup по умолчанию настроен как рекуррентный — запускается каждые 50 минут. При стандартном TTL кэша (3600 сек = 1 час) кэш обновляется с запасом 10 минут и никогда не протухает.

Настройка интервала

Интервал и TTL настраиваются под конкретный проект:

СценарийTTLИнтервалОписание
Небольшой каталог36003000По умолчанию
Средний каталог72006000Прогрев каждые 100 мин
Большой каталог1440010800Прогрев каждые 3 часа
Редкие обновления8640043200Прогрев 2 раза в сутки
  • TTL — системная настройка mfilter.cache_lifetime
  • Интервал — поле interval таска mfl_warmup в Scheduler

Важно

Интервал прогрева должен быть меньше TTL кэша. Если прогрев каталога занимает N минут, интервал должен быть: TTL - N - запас.

Что происходит при обновлении товаров

СценарийДействие
Регулярный импорт цен/остатковНичего — рекуррентный таск обновит кэш автоматически
Массовый импорт товаровЗапустить прогрев вручную через «Через Scheduler»
Изменение структуры фильтровОчистить кэш (Обслуживание → Очистить кэш) + запустить прогрев