CacheAction Plugin for Zend Framework

Posted by web-rocker in Zend Framework

Aufbauend auf meinem Artikel zum AjaxAction View Helper möchte ich nun mein CacheAction plugin für das Zend Framework vorstellen. Es wird einfach als FrontController Plugin registriert und cacht die Responses von Controlleraktionen.

Soweit noch keine Kunst. Seine ware Stärke spielt das Plugin erst in Verbindung mit dem AjaxAction View Helper aus. Die zwei sind zusammen das dynamische Duo :-)

Das Prinzip ist einfach:
Liegen die Ergebnisse von einer Controlleraktion bereits im Cache vor, so wir der Inhalt ohne Umwege, direkt in das HTML der Hauptseite eingebaut und ausgeliefert. Ist das Ergebnis noch nicht im Cache, wir die Seite unvollständig, aber schnell ausgeliefert und der fehlende Inhalt kommt per AJAX hinterher.

Die Konfiguration
Damit der Entwickler komfortabel und zentral entscheiden kann, ob eine Route und wielange sie gecacht werden soll. Dazu wird dem dem Request einfach der Parameter cacheaction-ttl mit der Anzahl an Sekunden, die eine Antwort gespeichert werden soll mitgegeben. Zum Beispiel so:

resources.router.routes.content.route = "/content/:action/*"
resources.router.routes.content.defaults.controller = "content"
resources.router.routes.content.defaults.action = "index"
resources.router.routes.content.defaults.module = "default"
resources.router.routes.content.defaults.cacheaction-ttl = "20"

Das Plugin in sebst benötigt nur die Information, welchen Cache es aus der CacheManager Ressource verwenden soll und ob es aktiv ist, oder nicht In unserem Fall den “action” Cache.

cacheaction.cache = "action"
cacheaction.enabled = "true"
resources.frontController.plugins.cacheaction.class = "Webrocker_Plugin_CacheAction"

Auf diese Konfigutation greift auch der AjaxAction View Helper zurück, weitere Konfiguration ist nicht notwendig.

Wenn das Plugin geladen ist, gibt es zusätzliche Header in der Response, um die Fehlersuche zu vereinfachen. Die Header beginnen mit x-cacheaction-*.

In dem Video kann man schön sehen, wie hoch der spontan die Seite reagiert und wie vereinzelt Daten per AJAX nachgeladen werden müssen, weil der Cache abgelaufen ist.

Näheres dazu auf der Projektseite.

Viel Spaß beim Ausprobieren!

You can follow any responses to this entry through the RSS 2.0 You can leave a response, or trackback.

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • LinkedIn
  • Technorati
  • StumbleUpon
  • Reddit
  • RSS Feed
  • Google
  • Design Bump

One Response

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>