Cursos Magento

Como criar seu próprio cache no 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):

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>

Cache Magenteiro no final da lista.

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.

Últimos posts por Ricardo Martins (exibir todos)
Comentários

Deixe seu comentário

[fbcomments url="https://www.magenteiro.com/blog/magento-1/como-criar-seu-proprio-cache-no-magento-1/"]