Salvando Dados Diversos no Cache do Magento

Olá galera,

Atualmente temos pouco hábito de se trabalhar com o cache nativo do Magento em nossos projetos de e-commerce, principalmente quando o projeto não é um projeto de grande porte.

O sistema de cache nativo do Magento é baseado no Zend_Cache e não é difícil de ser usado. Recomendo fortemente o uso do cache do Magento, pois não é novidade que o Magento, devido sua robustez e arquitetura EAV, é mais lento que muitas plataformas concorrentes, porém a implementação desta prática deve ser em doses homeopáticas e deve-se tomar o máximo de cuidado para definir o lifetime corretamente para cada informação a ser cacheada.

Abaixo segue um snippet de código simples que pode ser utilizado para salvar dados no objeto de cache do Magento:

...
/**
 * Sample method that retrieves the data from Magento cache.
 *
 * @return string
 */
public function getAnyInformation()
{
    /**
     * This is the cache key for this data...
     */
    $informationKey = 'data_key_for_information';

    $data = null;

    /**
     * Checks if cache was successfully loaded.
     * If cache does not exist or cache lifetime is expired the data needs to be saved again.
     */
    if (!($data = Mage::app()->getCache()->load($informationKey))) {

        /**
         * Gets the fresh data with specific method...
         */
        $data     = $this->_getMyInformationMethod();

        /**
         * Sets the tag name for cache...
         */
        $tags     = array('MY_TAGS');

        /**
         * Set the lifetime for this information in the cache...
         */
        $lifetime = 7200;

        /**
         * Saves the cache...
         */
        Mage::app()->getCache()->save($data, $informationKey, $tags, $lifetime);
    }

    return $data;
}
...

O código acima é basicamente um exemplo de utilização do cache do Magento. Vamos detalhar um pouco este método:

O trecho abaixo define uma cache key para os dados que vão ser salvos. Uma cache key é uma chave identificadora que deve ser única para cada dado salvo no cache do Magento. É como se fosse o nome do cache, pois o Magento verifica a existência dos dados através dela.

$informationKey = 'data_key_for_information';

Neste trecho verificamos se a variável $data é preenchida com o valor retornado do objeto de cache do Magento. Caso o objeto de cache não consiga ler o cache, seja por que o cache key é inexistente ou por que já está expirado, o mesmo retornará um valor nulo, forçando o valor ser gerado novamente e salvo no cache.

if (!($data = Mage::app()->getCache()->load($informationKey))) {

Aqui definimos os parâmetros necessários para salvar o conteúdo da variável $data no cache do Magento: os dados, as tags e o lifetime ou tempo de vida do cache.

$data     = $this->_getMyInformationMethod();
$tags     = array('MY_TAGS');
$lifetime = 7200;

Finalmente com este trecho de código salvamos os dados no cache do Magento. Agora os dados ficam disponíveis no cache e possui validade de 7200 segundos.

Mage::app()->getCache()->save($data, $informationKey, $tags, $lifetime);

Bom galera, esta dica pode ajudar muitos problemas de performance que podem ser evitadas no Magento, porém usem com muita cautela, ok? Existem 3 tipos de dados: os que não devem ser cacheados, os que devem ser cacheados, porém atualizados em um espaço de tempo e os dados estáticos, que basicamente podem ser cacheados para sempre.

Espero que tenham gostado deste post e até a próxima!

Abraços.

Tiago

1 Comment

Leave A Reply

Navigate