2010-11-07 15 views
0

Comment implémenteriez-vous la mise en cache du contenu de mise en page dans Zend Framework?Comment mettre en cache le contenu de la mise en page dans Zend Framework

Dans le layout.phtml je fais: $this->layout->content et je veux que le contenu de cette variable soit mis en cache. Les autres widgets de la mise en page sont en temps réel (ou mis en cache d'une autre manière).

Les meilleurs paris sont:

  • cache statique (le plus rapide)
  • page cache

Mes pages ont déjà id unique page (canonical), il pourrait être utilisé comme la page étiquette de cache. Il semble que je doive surcharger __get propriété de la mise en page. J'essaie de faire quelque chose comme la mise en page de SO (panneau d'utilisateur en haut, reste en cache pour tous).
Je suppose que le site devrait fonctionner sans JavaScript.

+0

Je suppose que $ this-> layout-> contenu contient le contenu de la vue du contrôleur? Donc vous voulez mettre en cache le résultat d'une action? – Fge

+0

@Fge Résultats de toutes les actions (ou presque toutes, certaines exclus). – takeshin

Répondre

0

Vous voudrez peut-être jeter un oeil à la description de Front Controller Cache plugin weierophinney. Le problème est probablement que vous ne voulez pas que le script s'arrête sur le cache. Donc, vous n'avez pas le script, vous pouvez travailler avec $request->setDispatched(true) dans le plugin. (Vous auriez besoin d'un nouvel objet de requête pour chaque cache différent).
Une autre approche pourrait être que vous n'utilisez pas le dispatchLoopStartup mais le preDispatch dans votre plugin et réinitialiser le dispatching là.
Leur façon de procéder dépend de la façon dont vous chargez tous les autres éléments (que ce soit en cache ou non). (Par exemple ActionStack envoie une nouvelle requête au répartiteur).