Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Petit problème. J'ai un contrôlleur qui gère toutes les boîtes sur mon site. Donc, pour chaque boîte, j'utilise $this->action(....).
Le problème que j'ai touche 2 choses:
1- Pas capable de faire une cache de ce qui sort de l'action.
J'ai pensé utiliser la fonction postDispatch et d'attraper le $this->getResponse()->getBody(), mais il est vide......
Alors comment le récupérer??
2- J'ai simuler le contenu de la cache. Il est bel et bien récupérer par la fonction init de mon BoxController, mais il exécute quand même l'action. Comment l'empêcher de l'exécuter? J'ai beau mettre un return avec le contenu, rien y fait. Je ne peux pas non plus mettre un exit, le reste de ma page arrête de s'exécuter.
Quelqu'un a une idée??
Hors ligne
Bonjour,
Je relance ce sujet car je rencontre actuellement le même problème. Je souhaiterais mettre en cache le rendu de certaines actions.
J'ai bien trouvé un plugin présenté par Julien Pauli à cette page :
http://julien-pauli.developpez.com/tuto … _2#LII-D-2
Cependant, il ne correspond pas très bien à ce dont j'ai besoin car il met en cache une page entière alors que je souhaiterais mettre en cache certaines parties seulement de mes pages, appelées grâce à l'aide de vue Zend_View_Helper_Action.
Comme ce membre, j'ai pensé récupérer le rendu avec $this->getResponse()->getBody() mais cela ne donne rien.
Auriez-vous une piste ?
Merci d'avance pour votre aide.
Dernière modification par nicoz86 (13-03-2010 17:14:19)
Hors ligne
bonjour,
après essai non concluant pour moi aussi avec preDispatch et postDispatch de mon controller, je suis "remonté d'un cran" avec un plugin héritant de Zend_Controller_Plugin_Abstract, que je charge depuis mon bootstrap.
Ce plugin définit les méthodes dispatchLoopShutdown (qui sauvegarde $this->getResponse() en cache), et dispatchLoopStartup (qui charge l'objet reponse avec le cache s'il existe).
Suis parti de l'exemple ici :http://devzone.zend.com/article/3372
Hors ligne
J'utilise la même technique d'un plugin charger dans le bootstrap.
Je sélectionne mes pages à mettre en cache par regex comme ceci:
$frontendOptions = array( 'lifetime' => 7200, 'debug_header' => true, // pour le déboguage 'regexps' => array( // met en cache la totalité d'IndexController '^/$' => array('cache' => true), // met en cache la totalité d'IndexController '^/index/' => array('cache' => true), // nous ne mettons pas en cache l'ArticleController... '^/article/' => array('cache' => false), // ...mais nous mettons en cache l'action "view" '^/article/view/' => array( // de cet ArticleController 'cache' => true, // et nous mettons en cache même lorsqu'il y a // des variables dans $_POST 'cache_with_post_variables' => true, // (mais le cache sera dépendent du tableau $_POST) 'make_id_with_post_variables' => true, ) ) );
Source: http://framework.zend.com/manual/fr/zen … tends.html
Hors ligne