Предыдущая моя статья восхваляла Битрикс. Теперь настало время и пожурить. Так сказать используем метод кнута и пряника.
Достался мне от старых разрабов интернет-магазин. Все на нем сделал, все работает, но вот почему-то каталог очень долго грузится, особенно корень каталога, в котором выводятся товары каталога. Сам компонент catalog вынесен в свое пространство имен. Ну и я конечно сразу начал материть старых разрабов и полез разбираться. Оказалось, что сам компонент catalog.section идет стандартный. Провел отладку и выявил, что компонент дает 10 тыс. запросов за 2 секундаы а сам компонент загружается 16 секунд. Не мало так для одного компонента. Но мне же интересно в чем дело и выявил, что такую загрузку в компоненте дает следующий код:
В итоге пришлось обратиться в службу поддержки Битрикса. Сначала они меня отправили куда подальше, думая, что компонент нестандартный. Но я указал на стандартный компонент catalog.section и они признали, что эту проблему они знают и разработчик занимается данный вопросом. Обещали в ближайших обновлениях решить этот вопрос. Если честно, мне от этого легче не стала, так как загрузка страницы в 18 секунд - это не хорошо. Пришлось лезть в ядро Битрикса. Нашел проблему вот где: функция CIBlockPriceTools::GetItemPrices
То есть косяк в расчете скидок. Так как на сайте скидок пока нет, то просто закомментил расчет скидок.
Так что ждем обновления и решения данного вопроса.
Оригинальная статья:
Достался мне от старых разрабов интернет-магазин. Все на нем сделал, все работает, но вот почему-то каталог очень долго грузится, особенно корень каталога, в котором выводятся товары каталога. Сам компонент catalog вынесен в свое пространство имен. Ну и я конечно сразу начал материть старых разрабов и полез разбираться. Оказалось, что сам компонент catalog.section идет стандартный. Провел отладку и выявил, что компонент дает 10 тыс. запросов за 2 секундаы а сам компонент загружается 16 секунд. Не мало так для одного компонента. Но мне же интересно в чем дело и выявил, что такую загрузку в компоненте дает следующий код:
$arOffers = CIBlockPriceTools::GetOffersArray( $arParams["IBLOCK_ID"] ,$arResult["ELEMENTS"] ,array( $arParams["OFFERS_SORT_FIELD"] => $arParams["OFFERS_SORT_ORDER"], "ID" => "DESC", ) ,$arParams["OFFERS_FIELD_CODE"] ,$arParams["OFFERS_PROPERTY_CODE"] ,$arParams["OFFERS_LIMIT"] ,$arResult["PRICES"] ,$arParams['PRICE_VAT_INCLUDE'] ,$arConvertParams ); |
$arDiscounts = CCatalogDiscount::GetDiscount( $arItem["ID"], $arItem["IBLOCK_ID"], array($value["ID"]), $arUserGroups, "N", $LID, array() ); |
То есть косяк в расчете скидок. Так как на сайте скидок пока нет, то просто закомментил расчет скидок.
Так что ждем обновления и решения данного вопроса.
Оригинальная статья:
.