Оптимизация загрузки SKU в списке
Здравствуйте. Со времен BXREADY на нашем сайте существовала следующая проблема:
Наш каталог построен на основе торговых предложений. Почти все товары имеют SKU. И каждое SKU имеет как минимум одно свойство с картинкой - это нужно чтобы можно было отобрать предложение в списке. Сам каталог состоит из 7000шт товаров. SKU - 17000шт и у каждого по свойству.
В ходе тестирования вашего продукта выяснилось, что при включении функционала sku и если свойство для отбора отображается в виде изображения, то почти любая страница со списком товара, грузится более 10сек в нашем случае.
Обнаружил что в шаблоне компонента catalog.section в файле result_modifier.php используется метод:
$arNeedValues = array(); CIBlockPriceTools::getTreePropertyValues($arSKUPropList, $arNeedValues);Первый параметр - массив свойств для отбора SKU. Например "цвет". Во втором параметре - массив значений этих свойств. Второй параметр пустой! И метод получает структуру ВСЕХ значений! И если у нас SKU 7000шт и у каждого своё свойство "цвет" со своим уникальным значением, то создаётся 14 ТЫСЯЧ ДОПОЛНИТЕЛЬНЫХ ЗАПРОСОВ В БД, результат которых, на мой взгляд нигде не используется при выводе товара. Но у меня на странице выводится всего 20-40 sku и картинки для них. Зачем мне информация об оставшихся 6960 изображений?????? С моим каталогом Выполнение этого кода занимает около 10 секунд!!
Но благо для себя я нашёл решение. И делюсь им с другими обладателями продукта АСПРО МАКСИМУМ. Может кому поможет
Возможно я где-то ошибаюсь, но вроде всё работает корректно:
$arNeedValues = array(); // Балуша ниже foreach ($arResult["ITEMS"] as $item) { foreach ($item["OFFERS"] as $offer) { foreach ($offer["DISPLAY_PROPERTIES"] as $prop) { if (in_array($prop['CODE'], $arParams['OFFER_TREE_PROPS'])) { if ($prop["PROPERTY_TYPE"] == "L"){ if ($prop["VALUE_ENUM_ID"]) $arNeedValues[$prop["ID"]][] = $prop["VALUE_ENUM_ID"]; } else { if ($prop["VALUE"]) $arNeedValues[$prop["ID"]][] = $prop["VALUE"]; } } } } } // Балуша выше CIBlockPriceTools::getTreePropertyValues($arSKUPropList, $arNeedValues);
было:
Стало:
было:
Стало:
Очень хотелось бы услышать комментарий от разработчиков Аспро.
Очень хотелось бы услышать комментарий от разработчиков Аспро.
Здравствуйте. Благодарим вас за обратную связь. Зарегистрировали задачу под номером MAX-3287. Рассмотрим ваш вариант реализации. Продуктивной вам недели!
Здравствуйте. Благодарим вас за обратную связь. Зарегистрировали задачу под номером MAX-3287. Рассмотрим ваш вариант реализации. Продуктивной вам недели!
Ребята красавцы! Спасибо большое, что уже в работе! Реально необходимая вещь в проектах с большим количеством SKU!
Ребята красавцы! Спасибо большое, что уже в работе! Реально необходимая вещь в проектах с большим количеством SKU!
Комментарии на данной страницы заблокированы!