2010-05-30 2 views
2

J'ai une action qui affiche deux scripts de vue différents selon que l'utilisateur est connecté ou non.Comment utiliser Zend Cache sur ce problème particulier

class IndexController extends Zend_Controller_Action 
{ 
    .... 
     public function indexAction() 
      { 

       $auth = Zend_Auth::getInstance(); 
       if($auth->hasIdentity()) 
       { 
        $this->render('indexregistered'); 
        return; 
       } 
       else { 
        $this->render('indexpublic'); 
        return; 
      } 
    } 
    ....  
} 

J'ai vu assez quelques exemples utiles sur la façon d'utiliser le cache Zend et ils semblent se fonder sur le fait que l'action rend un script particulier. Ce que je regarde vraiment est la meilleure approche pour mettre en cache le indexpublic script qui obtient un certain nombre de hits et je voudrais vraiment éviter la surcharge Zend MVC si possible.

Répondre

2

Zend_Cache_Frontend_Output peut-être ce dont vous avez besoin ici:

if (!($cache->start('indexpublic'))) { 
    // output everything as usual 
    $this->render('indexpublic'); 
    $cache->end(); // output buffering ends 
} 

Avant cela, le gestionnaire de cache doit être initialisé (peut-être dans le bootstrap), par exemple:

$frontendOptions = array(
    'lifetime' => 7200 
); 

$backendOptions = array(
    'cache_dir' => '/tmp/' 
); 

// getting a Zend_Cache_Frontend_Output object 
$cache = Zend_Cache::factory('Output', 
          'File', 
          $frontendOptions, 
          $backendOptions); 
+0

+1 pour une démonstration claire de Zend_Cache_Frontend_Output – timdev

2

Vous n'êtes pas "L'environnement MVC est exactement le contexte dans lequel vit Zend_Cache. Une fois que vous êtes dans une action du contrôleur, vous avez déjà utilisé un tas de ressources pour le routage et l'installation. Cela dit, si quelque chose de coûteux se passe à l'intérieur de indexpublic.phtml, vous pouvez utiliser Zend_Cache_Frontend_Output à l'intérieur de votre modèle pour mettre en cache un tas de choses. Si indexpublic déclenche des opérations coûteuses (comme les hits DB), cela peut valoir la peine. Si c'est du pur PHP qui génère du balisage, il est peu probable que vous obteniez beaucoup d'améliorations. Avant de faire quoi que ce soit, je vous suggère d'étudier très attentivement le comportement de votre application et de vous assurer que vous optimisez au bon endroit, et non prématurément.

Questions connexes