Gérer le cache de Magento 2
Mettre un block en cache
Les blocs qui héritent de la classe Magento\Framework\View\Element\Template se mettent en cache automatiquement.
Le cache est géré via une clé de cache qu'il est possible de personnaliser avec la fonction getCacheKeyInfo.
Par défaut, voici son contenu :
/**
* Get cache key informative items
*
* @return array
*/
public function getCacheKeyInfo()
{
return [
'BLOCK_TPL',
$this->_storeManager->getStore()->getCode(),
$this->getTemplateFile(),
'base_url' => $this->getBaseUrl(),
'template' => $this->getTemplate()
];
}
Afin d'être mis à jour automatiquement par le Full Page Cache, notre block et/ou notre modèle doivent implémenter la classe \Magento\Framework\DataObject\IdentityInterface.
La fonction getIdentities() sera alors disponible et permet de définir les tags sur lesquels le block ou le modèle s'enregistrent.
Exemple pour le block affichant une page CMS :
/**
* Return identifiers for produced content
*
* @return array
*/
public function getIdentities()
{
return [\Magento\Cms\Model\Page::CACHE_TAG . '_' . $this->getPage()->getId()];
}