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:

[php]

/**
* 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;
}

[/php]

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.
[php]
$informationKey = ‘data_key_for_information’;
[/php]

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.

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

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.

[php]
$data = $this->_getMyInformationMethod();
$tags = array(‘MY_TAGS’);
$lifetime = 7200;
[/php]

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.

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

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

One thought on “Salvando Dados Diversos no Cache do Magento

Leave a comment