web-dev-qa-db-fra.com

Le cache getList des composants ne se charge pas / n'enregistre pas

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.

3
Chaosxmk

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.

2
Dennis Heiden