Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Tout d'abord bonjour à tous, voilà je me met au Zend Framework depuis quelques semaines et j'ai actuellement un problème de cache. Le cache a déjà fonctionnait mais je ne comprend pas pourquoi aujourd'hui il ne fonctionne plus. J'ai donc fait une save de mon projet et là je suis en train de faire un test avec une version simplifiée mais ca ne fonctionne toujours pas. Voici le code pour l'action index du contrôleur index
<? Zend_Loader::loadClass('Aki_Controller_Action'); class IndexController extends Aki_Controller_Action { public function init() { self::_init(); require_once 'Zend/Cache.php'; $frontendOptions = array('lifetime' => 7200); $backendOptions = array('cache_dir' => 'cache'); // obtenir un objet Zend_Cache_Frontend_Page $cache = Zend_Cache::factory('Page', 'File', $frontendOptions, $backendOptions); $cache->start(); } public function indexAction() { require('fr/default.lang'); require('fr/visiteur.lang'); require('Func/viewVisiteur.php'); // on indique le layout à utiliser Aki_Registry::getLayout()->setLayout('visiteur'); // envoi les données communes au contrôleur quelque soit l'action $this->view->base = self::$config->general->url; $this->view->charset = self::$config->general->charset; $this->view->style = self::$config->general->url.self::$config->path->stylePath.'/visiteur.css'; viewMenu($this); viewFooter($this); // envoi des variables d'entête $this->view->title = ACCUEIL_TITLE; $this->view->description = DEFAULT_DESCRIPTION; $this->view->keywords = DEFAULT_KEYWORDS; $this->view->entete = ACCUEIL_ENTETE; $this->view->bloc1 = ACCUEIL_BLOC1; $this->view->bloc2 = ACCUEIL_BLOC2; $this->view->bloc3 = ACCUEIL_BLOC3; } } ?>
Bon le code dans l'indexAction est pas propre pour le moment mais c'est juste pour tester, je m'intéresse surtout au code:
require_once 'Zend/Cache.php'; $frontendOptions = array('lifetime' => 7200); $backendOptions = array('cache_dir' => './cache/'); // obtenir un objet Zend_Cache_Frontend_Page $cache = Zend_Cache::factory('Page', 'File', $frontendOptions, $backendOptions); $cache->start();
c'est a peu prés le même que dans la doc en plus simple, je n'ai aucune erreur lors de l'execution mais aucun fichier ne se met dans le repertoire cache. Même si je met le code du cache dans l'indexAction, ça fait pareil. Ce qui me rend dingue c'est qu'il a déjà marché et je ne vois pas pourquoi il ne fonctionne plus maintenant.
Pourriez vous m'aider car là je bloque totalement et je ne vois vraiment pas le prob.
Merci beaucoup à vous
Dernière modification par Akira59 (09-04-2008 18:39:43)
Hors ligne
Bonjour,
Je n'ai utilisé que le cache core, mais a priori, je dirais qu'il y a un problème dans ton code :
tu fais
$cache->start();
A priori je pense qu'il faut un id de cache en paramètre de start():
$cache->start("maPage");
Et il me parrait probable que la page ne soit réellement enregistrée sur le disque que quand tu fais le $cache->end() associé.
Cela dit dans ton cas, il y a un truc un peu foireux, parce que à la fin de ton action, tu ne peux pas appeler le $cache->end() parce que la vue n'est pas encore appelée donc le site n'a rien généré encore.
A mon avis il serait judicieux de mettre ton $cache->start($id) dans le dispatchLoopStartup() d'un plugin et ton $cache->end() dans le dispatchLoopShutdown() du même plugin.
A+, Philippe
PS : tu as une doc qui explique le principe des plugins et des helpers en cas de besoin : http://www.kitpages.fr/zf_helper_plugin.php
Hors ligne
Le cache 'Page' n'a pas de end(). La fin c'est lorsque la page est envoyée.
L'id tu n'a pas besoin de le spécifier, il est calculé en fonction de $_SERVER['REQUEST_URI'] , donc attention, il ne va cacher que si il n'y a pas de GET, POST, cookie, etc.....
La doc est là
Hors ligne
Merci à toi Julien, effectivement c'est à cause d'un cookie, je supprime les cookies de mon navigateur et là les pages se mettent en cache. Je vais donc mettre dans les options mise en cache même avec un cookie. Un grand merci à vous pour ces réponses rapides et efficaces.
Hors ligne
Pages: 1