hourglass
Acelere a contagem de produtos da categoria com cache

Acelere a contagem de produtos da categoria com cache

O Opencart tem um gargalo de desempenho conhecido, onde os tempos de carregamento da categoria e do filtro são significativamente mais lentos com a contagem de produtos da categoria ativada.

A função php responsável pela contagem de produtos está localizada no arquivo ?catalog?model?catalog?product.php e é chamada getTotalProducts().

Podemos usar o cache do Opencart para acelerar os tempos de carregamento da página com apenas um pequeno trade-off em que a contagem de produtos da categoria leva mais tempo para ser atualizada.

Para armazenar em cache as contagens de produtos, precisamos substituir a declaração de devolução no final da função que pode ser encontrada em torno da linha 519:

$query = $this->db->query($sql);
return $query->row['total'];

Substitua por:

 $cacheid='product.gettotalproducts.'.md5($sql).'prc';
       $total=$this->cache->get($cacheid);
       if (!$total) {
           $query = $this->db->query($sql);
           $total = $query->row['total'];
           $this->cache->set($cacheid,$total);
       }
       return $total;

Isso usa um hash MD5 da função sql para armazenar os valores e só executa a consulta no banco de dados se a contagem do produto já não existir.