J'ai construit un composant personnalisé et j'essaie de le rendre un peu plus rapide. Pendant que je parcourais des fichiers de base du modèle, j'ai constaté que leur getItems()
utilise un cache pour réduire les requêtes de base de données:
$store = $this->getStoreId();
if (isset($this->cache[$store]))
{
return $this->cache[$store];
}
try
{
// Load the list items and add the items to the internal cache.
$this->cache[$store] = $this->_getList($this->_getListQuery(), $this->getStart(), $this->getState('list.limit'));
}
Je tente donc de dupliquer cela pour mon composant. Le code est pratiquement le même, mais chaque fois que je vérifie isset($this->cache[$store])
, il est toujours désactivé. Je ne sais pas si j'ai un problème pour récupérer $this->cache[$store]
Ou enregistrer dans celui-ci.
Dans votre contrôleur de composant, vérifiez la fonction d'affichage:
public function display($cachable = false, $urlparams = false)
{
//...
parent::display($cachable, $safeurlparams);
return $this;
}
Changez le en:
parent::display(true, $safeurlparams);
Et testez à nouveau.