24 февраля 2013 г.

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

В перечисленных ниже файлах вычисляются количество продуктов для каждой категории. Количество будет показано только в том случае, если включена соответствующая опция config_product_count в панели администрирования магазином.

./catalog/controller/module/category.php
./catalog/controller/product/category.php
./catalog/controller/common/header.php

Однако несмотря на саму возможность отключения показа количества продуктов в меню категорий, нагрузка остаётся и проблема в условии их показа:

$product_total = $this->model_catalog_product->getTotalProducts($data);
...
'name'  => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''),
...

Очевидно обращение к модели не имеет смысла, если показ отключён. Более верным решением будут следующие строчки кода:

$product_total = '';
...

if ($this->config->get('config_product_count')) {
$product_total = $this->model_catalog_product->getTotalProducts($data);
$product_total = ' (' . $product_total . ')';
}

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

0 comments:

Отправить комментарий

  • RSS
  • Twitter
  • Youtube