2013-12-06 2 views
0

Я выполнил бенчмаркинг по сценарию, который загружает все продукты из категории, route=product/category. Я вставил несколько функций микропоры по всему сценарию и получил следующие результаты:Время загрузки страницы категории OpenCart

Array 
(
    [0] => 1386295629.1175 
    [1] => 1386295629.1556 
    [2] => 1386295629.1562 
    [3] => 1386295629.1562 
    [4] => 1386295629.4826 
    [5] => 1386295629.49 
    [6] => 1386295629.4908 
    [7] => 1386295629.491 
) 

От начала до конца, он принимает 0.3735 секунд для загрузки данных для всей страницы. Сюда входят все SQL-запросы и изменение размера изображения (при необходимости). Я побежал тест на этой странице:

http://www.hollywoodcollectibles.com/baseball/autographed-baseball-balls

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

я побежал другой тест, измерение этого времени, сколько времени требуется, чтобы сделать фактический вывод, $this->response->setOutput($this->render());

Array 
(
    [0] => 1386296946.8589 
    [1] => 1386296964.206 
) 

Теперь мы получаем где-то. Для получения результата Opencart занял 17,34 секунды.

После этого я потерян. Может ли кто-нибудь указать мне, где функция $this->render() находится в Opencart, и, возможно, дать мне другие предложения о том, где искать узкое место?

+0

Теперь удалите кеш-файлы и выполните бенчмаркинг ;-) Это не будет '0.3735' секунд ;-) Один вопрос, хотя: глядя на это большое количество категорий - ** Вы установили удаление * количества товаров категории * * расширение ** ?? Если нет, попробуйте один, а затем вернитесь с результатом ;-) – shadyyx

+0

Да, есть vqmod, который удаляет счет категории. Я очищаю кеш религиозно, после любых небольших изменений, которые я вложил. –

ответ

1

Я не знаю, если это поможет, но эта функция находится в system/engine/controller.php

protected function render() { 
    foreach ($this->children as $child) { 
     $this->data[basename($child)] = $this->getChild($child); 
    } 

    if (file_exists(DIR_TEMPLATE . $this->template)) { 
     extract($this->data); 

     ob_start(); 

     require(DIR_TEMPLATE . $this->template); 

     $this->output = ob_get_contents(); 

     ob_end_clean(); 

     return $this->output; 
    } else { 
     trigger_error('Error: Could not load template ' . DIR_TEMPLATE . $this->template . '!'); 
     exit();    
    } 
} 

есть другая функция визуализации() в system/library/pagination.php, но это только для пагинации я верю.

Смежные вопросы