Оптимизация опций и аттрибутов в OpenCart

Всем привет. Недавно пришел заказ на backend-оптимизацию с описанием проблемы — тормозит страница редактирования товара. Так как на сайте используется много опций и аттрибутов, я стал грешить на них еще до проверки. Проверка xhprof дала понять, что задержка кроется именно в модели, в функциях получения опций и аттрибутов. Было принято решение сделать оптимизацию опций и аттрибутов, оптимизировать PHP/SQL код.

Аналогичная проблема была так же присуща страницам категорий/товаров/поиска/производителей витрины магазина и модулю экспорта CSV Product Export, потому что код везде один и тот же.

Решение

Из функций получения опция и аттрибутов убраны дополнительные SQL подзапросы, так как все необходимые данные можно получить в одном SQL запросе. Так же используются PHP указатели, что позволило обработать все данные в одном цикле. Этот вариант оптимизации подойдет для всех версий OpenCart.

Файл catalog/model/catalog/product.php

По аналогии поступил с админкой (только опции) и с модулем CSV Product Export. Будьте внимательны при использовании этого кода, он изменен, а значит и vqmod/ocmod модификации, которые работают с этим участком кода могут работать не так как ожидается.

Результат

  • Страница административной панели стала грузиться на ~25 сек быстрей и занимала не более 1.5 секунд.
  • Скорость загрузки страниц категорий/товаров/поиска/производителей снизилась на пару секунд.
  • Модуль экспорта начал создавать файл с товарами всего за пару секунд.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *