Tiago Sampaio

main ai engineering career

engineering

3 min read

Salvando Dados Diversos no Cache do Magento

443128587939.png — 680 × 309

Magento Speed Up

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

Written by

TS

Tiago Sampaio

Adobe Commerce & Magento 2 Expert

Senior developer with 15+ years building software. Writes practical fixes for Magento 2 and Adobe Commerce, and honest notes on growing as a developer.

$ git remote add inbox

Get new commits by email

New posts from both branches, engineering and career. No spam, unsubscribe any time.

One response to “Salvando Dados Diversos no Cache do Magento”

$ git notes show

  1. Onde coloco o código acima?