Mettre en cache des collections de valeurs

Catégorie : Tutoriels
Le cache de Cake, correctement utilisé, peut vous permettre d'accélérer fortement l'exécution de vos applications.
Cependant, il ne fonctionne pas avec requestAction.

Prenons cet exemple :
  1. Vous stockez toutes vos catégories dans une base de données
  2. Lorsque vous affichez vos vues, vous voulez récupérer ces catégories de votre base de données
  3. Vous ne souhaitez pas faire appel à votre base de données à chaque fois que vous affichez l'une de vos catégories en sachant qu'elle n'a pas été modifiée.
  4. Vous désirez charger ces catégories au démarrage puis juste les récupérer depuis le cache au lieu de la base de données.
Il existe plusieurs méthodes permettant de mettre cela en place. Mais l'une d'elle est de mettre en cache dans un fichier (ou dans la session) lors du premier appel à la catégorie, puis de récupérer les données directement de ce cache.

Voici donc le code que nous pourrions obtenir :
function __getCategories()
{
  $cache_name = "views".DS."categories-list.php";
  $cache_expires = '+24 hours';

  $cache_data = cache($cache_name, null, $cache_expires);
  if (empty($cache_data))
  {
    $list = array_merge(array('categories'=>'All Categories'),
            $this->Contest->getEnumValues("contest_category"));
    cache($cache_name, serialize($list), $cache_expires);
  } else {
    $list = unserialize($cache_data);
  }
  return $list;
}


getenumValue() est un snippet hébergé sur CakeForge.

Pour récupérer vos catégories, vous n'avez donc plus qu'à faire, dans votre controlleur :
function test()
  {
    $categories = $this->__getCategories();
    debug($categories);
  }




Identification

Statistiques

153 utilisateurs
32 articles
5 connectes

CakePHP-fr

Actualites

PHP 5.2.2 et PHP 4.4.7
L'équipe de développement de PHP ...
Poste le : 04/05/2007


Nouvelles version CakePHP
Deux nouvelles versions de Cake voient le jour ...
Poste le : 06/04/2007


PHP 4.4.6
L'équipe de développement de PHP ...
Poste le : 01/03/2007


Sortie de PHP 5.2.1
L'équipe de développement de PHP ...
Poste le : 09/02/2007


Cake 1.1.13.4450 et 1.2.0.4451alpha
PhpNut nous l'annonce aujourd'hui, les versions...
Poste le : 05/02/2007


Liens