Загрузка
Документация

Данная инструкция предназначена для людей, имеющих базовые знания в HTML, Smarty, PHP. Разработчик плагина не осуществляет бесплатных работ по оптимизации и профилированию.

При помощи профилирования вы сможете определить все источники вызовов Гибких скидок. Данная информация позволит найти уязвимые с точки зрения быстродействия места. Используя рекомендации по оптимизации плагина, вы сможете уменьшить нагрузку на сервер.

Как осуществить профилирование?

1) Откройте настройки плагина и активируйте режим профилирования.

2) При необходимости расширьте настройки и сохранитесь.

3) Создайте указанную куку в браузере.

Необходимо создать куку fl-profiling-1588100398736.

Откройте страницу, для которой следует провести профилирование.

Открываем инструменты разработчика в браузере Chrome при помощи клавиши F12. Выбираем вкладку Application. В сайдбаре раскрываем Cookies и выбираем свой домен.

Для того, чтобы создать куку, необходимо дважды нажать на пустом белом поле сразу под всеми куками. После этого вы сможете указать название куки.

После того, как вы указали название, нажмите TAB и в качестве значения укажите единицу.

4) Перезагрузить страницу, для которой следует провести профилирование.

5) Откройте приложение Логи и найдите файл flexdiscount.profile.log.

Советуем после каждого профилирования удалять его, чтобы не путаться в данных.

Разбираемся в результатах профилирования

Плагин может вызываться из 3 источников:

  • Плагины (Plugin)
  • Методы (Method)
  • Шаблоны (Template)

Хуки, для которых записываются все вызовы:

  • frontend_products
  • order_calculate_discount

В плагине установлено 3 точки отслеживания (Point):

  • Before validating plugins
    Вызывается на этапе проверки плагинов. Здесь определяется, разрешено ли плагину продолжать обработку или нет. Можно оценить сколько обращений поступает к плагину.
  • After validating plugins
    Вызывается после проверки плагинов. Можно оценить, какие плагины прошли проверку.
  • Calculating
    Самая важная точка отслеживания. Вызывается после вычисления всех скидок.

Рассмотрим содержимое отчета.

1) Первое, что видно в файле, это время вызова и страница, для которой провели профилирование:

В нашем случае это страница товара.

2) Далее указывается хук, который отработал, количество вызовов, которые прошли через точки и время, потраченное на обработку.

Здесь можно оценить основную нагрузку на плагин.

Мы видим, что было 3 запроса на вычисление скидок (Point "Calculating"). Заняло это 0.04 сек.

6.3419342041016E-5. Это 6.34*10-5 сек.

Это хороший показатель, оптимизировать здесь в целом нечего. Но продолжим изучение отчета.

Дальше следует расшифровка вызовов (Callers) с описанием источников.

Вывод представлен древовидной структурой:

  • "−" одна черточка. Источник запроса.
  • "−−" две черточки. Точка отслеживание, через которую прошел запрос.
  • "−−−" три черточки. Служебный заголовок (Calls statistics), после которого перечисляется история вызовов (call).
  • "−−−−" четыре черточки. Служебная информация. Номер вызова и время его выполнения. Далее идет история вызовов.
  • "−−−−−" пять черточек. Вызов, который спровоцировал работу плагина в точке отслеживания. Количество таких вызовов зависит от пункта "Глубина" в настройках профилирования. Результатов может быть меньше. Такое случается, когда история вызовов была небольшой.

Рассмотрим часть отчета.

3)

Мы видим, что вызов произошел из метода shopFrontendProductAction->prepareProduct(). Это системный метод Shop-Script. Его никак нельзя изменить.

Во всех точках он отработал 1 раз. Его вызову предшествовала цепочка вызовов, начиная от waEvent->runPlugins().

4)

Дальше источником работы скидок был плагин Наклейки. Он дважды пытался вызвать плагин, но дальше первой точки не прошел. Гибкие скидки отфильтровали его.

Видно, что основной причиной вызова стал метод shopCartItemsModel->getByCode() через метод shopCart->items(), который вызвался из плагина Наклейки. Если обратиться к статье по оптимизации, мы найдем этот метод: (new shopCart())->items() - в перечне запросов, вызывающих расчеты скидок.

5)


Следующим источником являются сами же Гибкие скидки. Эту часть отчета мы опустим, потому что вызовы системные.

6)

Плагин Промоакции также был отфильтрован.

7) Дальше будем рассматривать только точку Calculating, потому что она самая значимая.

Из шаблона product.html плагин вызвался дважды:

  • при получении списка рекомендуемых товаров: shopProduct->upSelling()
  • при получении списка перекрестных товаров: shopProduct->crossSelling()

Найдем в шаблоне данные места:


8)

Хук order_calculate_discount (основной хук для расчета скидок) вызывался лишь один раз плагином Промоакции. Заняло это 0.00011 сек. Все последующие обращения к хуку не фиксировались, потому что плагин Гибкие скидки закешировал результаты и больше не проводил никаких расчетов.


Таким образом мы увидели все вызовы к плагину скидок. С точки зрения оптимизации можно отключить настройку "Изменение цен товаров на витрине", тогда не будет вызовов со 2 по 7 пункты включительно. Останется только order_calculate_discount. Насколько это необходимо - решать вам.

Опубликовано: 29 апреля 2020
0
Запрос на обработку

Можете заполнить форму, и мы свяжемся с вами

Ваше имя
Email
Сообщение