Como criar seu próprio cache no Magento 1
Backend, Desenvolvimento, Magento 1
Atualizado em 14 de abril de 2020
Como a maioria dos e-commerces e sistemas modernos, o Magento implementa um sistema de cache. Isso é útil em diversas tarefas complexas e aliviam significantemente a carga do sistema.
Neste artigo (Índice):
- Básico sobre caches no Magento
- A classe de Cache do Magento
- Salvando valores no cache do Magento ou no seu próprio cache
- Obtendo valores do cache
- Removendo valores do cache via código
- Alterando onde o cache é salvo
- Módulo de Exemplo
O básico
O Magento usa o conceito de chave-valor para armazenar valores em cache.
Além disso, ainda os valores salvos em cache também podem conter tags para facilitar a organização e agrupamento quando quisermos nos livrar delas.
Cada tag é representada por uma linha na tabela de Gerenciamento de Cache (core_cache_option), e cada tipo de cache representado na área respectiva no admin.
A classe de Cache do Magento
O cache do Magento é controlado pela classe Mage_Core_Model_Cache
. Geralmente ela é acessada/iniciada com Mage::app()->getCache()
.
Entre os métodos disponíveis, estão:
- load($chave)
- save($chave, $valor, $tags = array(), $tempoDeVida = null)
- remove($chave)
- clean($tags = array())
Armazenando novos valores
Para armazenar um novo valor, podemos fazer da seguinte forma:
$cache = Mage::app()->getCache(); $cache->save(date('H:i:s'), 'hora_atual', ['magenteiro'], 60);
Isso armazenará a hora no formato 15:45:55 (HH:MM:SS) por 60 segundos, dentro de um cache cuja chave é hora_atual
e será limpo sempre que as tags ['magenteiro']
forem limpas.
Opcionalmente eu posso fazer com que esta tag de cache seja limpa a partir do meu admin. Para isso, basta adicionar o trecho abaixo no config.xml do meu módulo.
<global> <cache> <types> <magenteiro translate="label,description" module="customcache"> <label>Magenteiro</label> <description>Caches específicos do Magenteiro. Aula Exemplo.</description> <tags>MAGENTEIRO</tags> </magenteiro> </types> </cache> </global>
Obtendo valores do Cache
Para vermos se o cache está ativo, e se existe um valor ainda válido (não expirado) para uma chave específica, fazemos:
Desta forma, usamos o método useCache para ver se o cache está habilitado e se podemos salvar e obter valores nele/dele.
Removendo valores
Para remover valores, podemos usar o método remove($chave)
. Seria algo como $cache->remove('hora_atual')
no nosso exemplo.
Indo além… onde o cache é salvo
Calma, eu não vou falar que tem mais sobre isso no curso de backend pra Magento do Magenteiro. 😂
Por padrão esses caches serão salvos em arquivo na pasta var/cache
do Magento.
Mas isto pode ser facilmente modificado. Ou seja, você pode trocar o mecanismo de cache substituindo a classe de cache no seu app/etc/local.xml
por exemplo. Isso é feito no nó config > global > cache > backend
, algo bem próximo do que fizemos para exibir o nosso cache no admin.
Existem várias implementações prontas para usar os mais diversos tipos de cache. O mais comum deles, é o Redis. E você pode ver como configurar seu Magento com Redis aqui mesmo no Magenteiro. Obviamente, também é possível usar Redis no Magento 2. 🙂
Módulo de Exemplo
Quer adiantar o trabalho? Baixe o módulo usado de exemplo nesta aula (Magenteiro_CustomCache). Ele adiciona um cache do tipo MAGENTEIRO e também exibe a hora a partir do cache em sualoja/testeCache.
Dúvidas?
Você pode usar a área de comentários abaixo, ou contar com a ajuda do nosso grupo exclusivo de desenvolvedores do curso de backend pra Magento do Magenteiro no Facebook (caso você seja aluno).
De onde veio este conteúdo tem muito mais. Não deixe de conferir os cursos exclusivos do Magenteiro.
- PagSeguro (PagBank) para Magento 1 recebe a Nova Geração - 9 de abril de 2024
- Recorrência no WooCommerce Sem Plugins Pagos - 28 de janeiro de 2024
- Chargeback. O que é, e como se livrar deles. - 19 de dezembro de 2023
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/magento-1/como-criar-seu-proprio-cache-no-magento-1/"]