Делаем интернет магазин электроники.
Товаров порядка 60 тысяч, разделов порядка 1000.
Всего уникальных свойств уже стремится к нескольким тысячам.
Причем они у нас обновляются автоматически из различных источников, в том числе из 1с.
Листание разделов интернет магазина с каждым днем все медленней и медленней,
по мере наполнения контентом.
Хочу окончательно разобраться как работает выборка свойств элементов торгового каталога.
Если я правильно понимаю, то каждый раз при выводе списка элементов каталога,
для каждого элемента Битрикс собирает информацию обо всех свойствах,
которые есть в этом инфоблоке, даже о тех которых нет у элемента.
Судя по дампам переменных шаблона, если значения свойств не указаны, Битрикс их заполняет пустыми значениями.
Вероятно это делается для обеспечения работы "умного фильтра",
но ведь было бы логичнее брать свойства только раздела инфоблока, а не всего инфоблока.
Так и работает современный Битрикс?
Это же невероятная избыточность и жуткое количество sql запросов.
Или я что-то не правильно понимаю, а если правильно то следующий вопрос:
Как правильно делать? Есть ли какие-то устоявшиеся практики. Как это делают крупные интернет магазины?
Неужели только кешированием спасаются.. кеширование это конечно хорошо,
но когда обновления идут достаточно быстро (например цены и остатки мы стараемся обновлять почти в реальном времени),
то скорость переинициализации кеша, тоже имеет значение.
А если характеристик будет очень много, то никакого железа не хватит.. надо оптимизировать работу алгоритмов.
Может быть надо для каждой категории товаров свой инфоблок создавать?
Товаров порядка 60 тысяч, разделов порядка 1000.
Всего уникальных свойств уже стремится к нескольким тысячам.
Причем они у нас обновляются автоматически из различных источников, в том числе из 1с.
Листание разделов интернет магазина с каждым днем все медленней и медленней,
по мере наполнения контентом.
Хочу окончательно разобраться как работает выборка свойств элементов торгового каталога.
Если я правильно понимаю, то каждый раз при выводе списка элементов каталога,
для каждого элемента Битрикс собирает информацию обо всех свойствах,
которые есть в этом инфоблоке, даже о тех которых нет у элемента.
Судя по дампам переменных шаблона, если значения свойств не указаны, Битрикс их заполняет пустыми значениями.
Вероятно это делается для обеспечения работы "умного фильтра",
но ведь было бы логичнее брать свойства только раздела инфоблока, а не всего инфоблока.
Так и работает современный Битрикс?
Это же невероятная избыточность и жуткое количество sql запросов.
Или я что-то не правильно понимаю, а если правильно то следующий вопрос:
Как правильно делать? Есть ли какие-то устоявшиеся практики. Как это делают крупные интернет магазины?
Неужели только кешированием спасаются.. кеширование это конечно хорошо,
но когда обновления идут достаточно быстро (например цены и остатки мы стараемся обновлять почти в реальном времени),
то скорость переинициализации кеша, тоже имеет значение.
А если характеристик будет очень много, то никакого железа не хватит.. надо оптимизировать работу алгоритмов.
Может быть надо для каждой категории товаров свой инфоблок создавать?