Otimização por Cache - Melhore o Desempenho da sua Loja Opencart

Otimização por Cache - Melhore o Desempenho da sua Loja Opencart - Foto 1
  • Descrição

Adicione em Cache as principais páginas mais acessadas e importantes da sua loja Opencart 3 e 2.3.0.2, como: Home, Produto, Categorias, Informação, entre outras, diminuindo o consumo do banco de dados, servidor e principalmente melhorando o desempenho da sua loja.
Reduz no geral pelo menos 200% do carregamento das páginas com cache, melhoria muito importante principalmente para loja usando muitos recursos do servidor ou que deseja a melhor experiência para o seu cliente.

A melhora no desempenho também ajuda no SEO da Loja, os buscadores dão preferência para lojas otimizadas e com melhores desempenhos.

O que faz

  • Adiciona em Cache os dados de várias páginas, não precisando processar sempre o PHP + MySQL por completo, já retornando para a parte visual os dados em Cache antes se tiver ele
  • Melhora o desempenho da loja e diminui o uso do Banco de Dados e do PHP, poupando recursos do Servidor
  • Cache das consultas do Startup, recurso inicial rodado sempre para iniciar sua loja Opencart, colocando em cache a parte de consultar o ID da Loja e as Configurações
  • URL Segura com Token gerado no Painel para limpar todos os Caches criados pela melhoria, funciona para o Cache usando arquivos, normalmente o padrão do Opencart, se preciso para outro driver, por favor informar para analisarmos a implementação. Pode ser acessada manualmente ou por em um Cron Job para limpar o cache da melhoria a cada X minutos, horas ou dias
  • Pode informar ao limpar o Cache da melhoria se é do tipo Redis ou Arquivo, por padrão é usado Cache como arquivo
  • Limpa dados do tipo Redis usando o shell_exec, por isso precisa ter este suporte no PHP
  • Pode limpar os dados da melhoria salvo no Redis ou Arquivo
  • Pode no Redis limpar todo o cache Redis usando o flushdb
  • Importante no Redis não pedir senha, pois usamos o redis-cli direto, se preciso com senha podemos analisar a implementação
  • Páginas com Cache adicionados:
- Startup (recurso rodado sempre para iniciar o Opencart) - Cache a parte das Configurações e do ID da Loja
- Página da Categoria, inclusive os filtros e ordem
- Página das Marcas (Fabricantes) e Informações dos Produtos das Marcas, inclusive os filtros e ordem
- Página do Produto, mantendo o recurso de contagem de visualizações
- Página do Produto na parte dos Reviews
- Página de Informações
- Página de busca, inclusive os filtros e ordem
- Página de Promoções (Especial), inclusive os filtros e ordem
- Módulos nativos: Mais Vendido, Destaque e Novidades
- Página inicial (Home)
- Parte de cima do site (Header) local que fica o Menu, Logo, Mini Carrinho, em resumo parte do menu para cima. Por padrão comentado no xml, pois pode ter loja com mais de uma moeda ou idioma, não podendo ter o Header em cache
- Parte de baixo do site (Footer), local que fica os links páginas de Informações, normalmente dados do CNPJ e outros detalhes
- Página Mapa do Site (Sitemap)
  • Código para analisar o tempo previsto, uso de memória e cpu antes de rodar uma consulta e depois para o driver do Banco MySQLI e PDO nativos do Opencart, código comentado, mas pode ser descomentado para verificar as consultas mais pesadas e quanto diminuiu o volume de consultas após o uso da nossa melhoria, em muitos casos vai cair em mais de 100% as quantidades das consultas nas páginas com Cache
  • Usamos o sistema de Cache nativo do Opencart para melhor compatibilidade e menos dependência, preferência pelo driver do Cache em arquivos (file), devido o método de limpar o cache implementando ser feito para ele
  • Painel Codemarket
  • Pode Habilitar ou Desabilitar a melhoria pelo Painel

Teste na Loja padrão do Opencart 3:
Feitos em um servidor na Digital Ocean no EUA com 1GB de Ram e 1 CPU, com outros serviços rodando nele. Cache em arquivos,  cada 100ms = 0.1s, logo 500ms = 0.5s.
Home: 500-600ms, após a melhoria 150ms-200ms, basicamente
Página do Produto, Busca, Página de informações e outras páginas com cache no geral tiveram resultados semelhantes ao da Home, tendo uma melhora de pelo menos 2x menos tempo para carregar a página e muito mais se não levarmos em conta o delay de chegar a comunicação até o servidor no EUA.

Como sabemos, envolve também o tempo até chegar ao servidor da Loja no EUA, que tem pelo menos um delay (atraso) de uns 100ms-150ms ou mais.
Por isso fizemos também um teste na Home adicionando no PHP uma contagem no começo dela e antes do retorno da parte visual e mesma coisa se tiver o cache.
Levou 320ms ou mais e com o cache levou 16-18ms, ou seja, o processamento do PHP e Banco de Dados leva normalmente mais de 300ms e tem instabilidade, afinal depende da disponibilidade dos recursos pela máquina, enquanto usando o cache se mantém mais estável, não tendo picos muito diferentes e sendo no geral 20x mais rápido.
Já a categoria Iphone e Ipads com poucos produtos, levou no geral 350ms-400ms e com cache 70-80ms, no geral 5x mais rápido.

Páginas com mais váriaveis de consulta como filtro, ordem e outros detalhes, devem ter uma melhora de pelo menos 5x ou mais e página mais simples como do produto, informação, home e outras no geral uma melhora de uns 15-20x, dependendo da quantidade de dados, servidor e tamanho o resultado pode ser ainda melhor.

Resumo do que é feito
Em sua loja Opencart para carregar a parte visual do site, antes é feito o processamento do PHP e Consulta no Banco para puxar os dados e processar eles.
Envolve portanto o controller, responsável por chamar o model, library, processar os dados e enviar para a parte visual, este processo envolve diversos códigos PHP no geral de rápido processamento, porém depende também do banco de dados e seu tamanho, imagina retornar uma categoria com 100, 1.000, 10.000 ou até mais produtos, o controller vai chamar várias consultas usando o Model para puxar os Produtos, dados da categoria, depois vai percorrer todos os produtos e fazer a montagem dos dados, que é retornanda no final para a chamada da parte visual, que carrega o visual com os dados passados pelo controller.

O que fazemos é no começo do código verificarmos se tem os dados em cache, se já tiver enviamos para a parte visual os dados em cache, ou seja, sem precisar ficar fazendo N consultas ao banco, montagem dos dados e outros detalhes lógicos.
Já no final do código, salvamos em cache os dados gerados, por isso na primeira vez é rodado normalmente e gerado o cache e nas próximas chamadas é usado o código em cache, logo mesmo que limpe o cache no geral, continua normal o funcionamento e vai ser gerado novamente um novo cache após o primeiro acesso a certa página com a melhoria implementada.

Só colocamos em cache páginas com foco em retorno de dados, não podendo ser adicionado ao cache por exemplo Carrinho, que varia muito, Checkout, Cadastro do cliente, entre outras páginas, que precisam realizar adição de dados no banco, em todo caso estas tem normalmente muito menos acessos, diferente da Home, Categorias, Produtos e outras, que são normalmente as mais acessadas e relevantes para o SEO e Buscadores.

O que é cache?
Resumidamente é uma forma de salvar e usar certos dados com acesso rápido e temporário, podendo ser salvo em arquivos, bancos, entre outros locais.
Tem um tempo de expiração, no qual após certo tempo ele é limpo e refeito depois um novo cache com dados mais atuais, por padrão no Opencart dura 1h ou conforme configurado na Loja.
É muito útil para otimização de desempenho, pois pode ser salvo dados já trabalhados, evitando assim o consumo do banco de dados e processamento dos dados e tem um acesso muito rápido.

Observação
Depende das melhorias usadas nas páginas com Cache ou tema, talvez seja preciso retirar o cache de alguma página/local ou adaptar, pois tem melhorias que não lidam bem com Cache ou precisam ser rodadas, como a contagem de visualizações dos Produtos, que colocamos antes do Cache para ela poder ser rodada/iniciada.
Logo em certos casos temos que tirar o Cache de certa página, mas ainda aproveitando o recurso nas demais páginas e locais.

Para limpar o Cache usando Redis usa na URL:  seusite.com.br/index.php?route=module/code_cache/clearAll&token=&cache_type=redis e para limpar o Cache geral do Redis a URL: seusite.com.br/index.php?route=module/code_cache/deleteAllRedis &token=&cache_type=redis
Lembre de trocar seusite.com.br pelo endereço do site e no token= informar o Token usado de segurança.

Pré Lançamento
08/02/2021

Atualização
Versão 1.1 - 26/08/2021

  • Pode informar ao limpar o Cache da melhoria se é do tipo Redis ou Arquivo, por padrão é usado Cache como arquivo
  • Limpa dados do tipo Redis usando o shell_exec, por isso precisa ter este suporte no PHP
  • Pode limpar os dados da melhoria salvo no Redis ou Arquivo
  • Pode no Redis limpar todo o cache Redis usando o flushdb
  • Importante no Redis não pedir senha, pois usamos o redis-cli direto, se preciso com senha podemos analisar a implementação
Atualização recomendada se usa Cache usando o Redis.

Compatibilidade

  • Opencart 3 até 3.0.3.8
  • Opencart 2.3.0.2
  • PHP 7.0 ou mais atual, preferência o 7.3 ou 7.4
  • Cache em arquivo ou Redis
  • Painel Codemarket
Boleto (5% off) ou 4x sem juros
R$ 249,00

Licença para um domínio
Código 100% original
Produto Premium
3 meses de suporte e atualização
1 Instalação e Adaptação ao Tema inclusa

2 vendas
Histórico do Autor
  • 77 produtos
  • 13084 vendas
  • 229 avaliações