1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- EN-Revision: 20725 -->
4 <sect1 id="zend.cache.frontends">
5 <title>Zend_Cache Frontends</title>
7 <sect2 id="zend.cache.frontends.core">
8 <title>Zend_Cache_Core</title>
9 <sect3 id="zend.cache.frontends.core.introduction">
10 <title>Einführung</title>
12 <classname>Zend_Cache_Core</classname> ist ein spezielles Frontend, da es der Kern
13 dieses Moduls ist. Es ist ein generelles Cache Frontend und wurde von anderen
18 Alle Frontends sind von <classname>Zend_Cache_Core</classname> abgeleitet, so
19 dass deren Methoden und Optionen (wie folgt beschrieben) auch in anderen
20 Frontends vorhanden sind. Deswegen werden sie dort nicht dokumentiert.
24 <sect3 id="zend.cache.frontends.core.options">
25 <title>Mögliche Optionen</title>
27 Diese Optionen werden der Factory Methode übergeben wie im nachfolgenden Beispiel
30 <table id="zend.cache.frontends.core.options.table">
31 <title>Core Frontend Optionen</title>
36 <entry>Daten Typ</entry>
37 <entry>Standardwert</entry>
38 <entry>Beschreibung</entry>
43 <entry><emphasis>caching</emphasis></entry>
44 <entry><type>Boolean</type></entry>
45 <entry><constant>TRUE</constant></entry>
47 Ein- / Ausschalten vom Caching (kann sehr nützlich für das
48 Debuggen von gecachten Skripten sein)
52 <entry><emphasis>cache_id_prefix</emphasis></entry>
53 <entry><type>String</type></entry>
54 <entry><constant>NULL</constant></entry>
56 Ein Präfix für alle Cache IDs. Wenn er auf
57 <constant>NULL</constant> gesetzt wird, wird kein Cache ID Präfix
58 verwendet. Der Cache ID Präfix erstellt grundsätzlich einen
59 Namespace im Cache, der verschiedenen Anwendungen oder Websites
60 die Verwendung eines gemeinsamen Caches erlaubt. Jede Anwendung
61 oder Website kann einen anderen Cache ID Prüfix verwenden sodas
62 spezielle Cache IDs mehr als einmal verwendet werden können.
66 <entry><emphasis>lifetime</emphasis></entry>
67 <entry><type>Integer</type></entry>
70 Cache Lebensdauer (in Sekunden), wenn auf <constant>NULL</constant>
71 gesetzt, ist der Cache für immer gültig.
75 <entry><emphasis>logging</emphasis></entry>
76 <entry><type>Boolean</type></entry>
77 <entry><constant>FALSE</constant></entry>
79 Wenn auf <constant>TRUE</constant> gesetzt, wird das Logging durch
80 <classname>Zend_Log</classname> aktiviert (aber das System wird
85 <entry><emphasis>write_control</emphasis></entry>
86 <entry><type>Boolean</type></entry>
87 <entry><constant>TRUE</constant></entry>
89 Ein- / Ausschalten der Schreibkontrolle (der Cache wird gleich
90 gelesen, nachdem er geschrieben wurde, um fehlerhafte Einträge zu
91 finden); das Einschalten der Schreibkontrolle wird das Schreiben des
92 Caches etwas verlangsamen, aber nicht das Lesen des Caches (es
93 können defekte Cache Dateien entdeckt werden, aber es ist keine
98 <entry><emphasis>automatic_serialization</emphasis></entry>
99 <entry><type>Boolean</type></entry>
100 <entry><constant>FALSE</constant></entry>
102 Ein- / Ausschalten der automatischen Serialisierung, kann dafür
103 benutzt werden, um Daten direkt zu speichern, welche keine Strings
104 sind (aber es ist langsamer)
108 <entry><emphasis>automatic_cleaning_factor</emphasis></entry>
109 <entry><type>Integer</type></entry>
112 Ausschalten / Abgleichen des automatischen Löschprozesses (Garbage
113 Collector): 0 heißt keine automatische Löschung des Caches, 1 heißt
114 Systematische Cache Löschung und x > 1 heißt automatisches
115 zufälliges Löschen 1 mal nach x Schreiboperationen.
119 <entry><emphasis>ignore_user_abort</emphasis></entry>
120 <entry><type>Boolean</type></entry>
121 <entry><constant>FALSE</constant></entry>
123 Auf <constant>TRUE</constant> gesetzt, wird der Kern das
124 <acronym>PHP</acronym> Flag ignore_user_abort innerhalb der
125 <methodname>save()</methodname> Methode setzen um Cache Korruption
126 in einigen Fällen zu verhindern
134 <sect3 id="zend.cache.core.examples">
135 <title>Beispiele</title>
137 Ein Beispiel wird ganz am Anfang des Handbuches gegeben.
140 Wenn nur Strings in den Cache gespeichert werden (denn mit der
141 "automatic_serialization" Option wäre es möglich Booleans zu speichern), kann ein
142 kompakterer Weg wie folgt gewählt werden:
144 <programlisting language="php"><![CDATA[
145 // Es wird angenommen das $cache existiert
147 $id = 'myBigLoop'; // Die Cache ID von dem "das gecached werden soll"
149 if (!($data = $cache->load($id))) {
153 for ($i = 0; $i < 10000; $i++) {
161 // [...] Irgendwas mit $data machen (ausgeben, verarbeiten, usw.)
164 Wenn mehrere Blöcke von Daten oder Daten Instanzen gecached werden sollen, ist die
165 Idee dahinter die gleiche:
167 <programlisting language="php"><![CDATA[
168 // Sicherstellen, dass eindeutige Identifizierer verwendet werden:
173 if (!($data = $cache->load($id1))) {
177 for ($i=0;$i<10000;$i++) {
186 // Hier wird NIE gecached
187 echo('NIE GECACHED! ');
190 if (!($data = $cache->load($id2))) {
194 for ($i=0;$i<10000;$i++) {
205 Wenn spezielle Werte gecached werden sollen (boolean mit der
206 "automatic_serialization" Option) oder leere Strings kann die kompakte Erstellung
207 wie oben gezeigt nicht verwendet werden. Der Cache Eintrag muß formell getestet
211 <programlisting language="php"><![CDATA[
212 // Die kompakte Erstellung
213 // (nicht gut wenn leere Strings und/oder boolsche Werte gecached werden)
214 if (!($data = $cache->load($id))) {
216 // Cache fehlgeschlagen
218 // [...] wir erstellen $data
224 // wir machen etwas mit $data
228 // die komplette Erstellung (funktioniert in jedem Fall)
229 if (!($cache->test($id))) {
231 // Cache fehlgeschlagen
233 // [...] wir erstellen $data
241 $data = $cache->load($id);
245 // Wir machen irgendetwas mit $data
252 <sect2 id="zend.cache.frontends.output">
253 <title>Zend_Cache_Frontend_Output</title>
254 <sect3 id="zend.cache.frontends.output.introduction">
255 <title>Einführung</title>
257 <classname>Zend_Cache_Frontend_Output</classname> ist ein Ausgabe-Empfangendes
258 Frontend. Es verwendet den Ausgabe Puffer in <acronym>PHP</acronym>, um alles
259 zwischen der <methodname>start()</methodname> und der
260 <methodname>end()</methodname> Methode zu fangen.
263 <sect3 id="zend.cache.frontends.output.options">
264 <title>Mögliche Optionen</title>
266 Dieses Frontend hat keine bestimmten Optionen zusätzlich zu denen von
267 <classname>Zend_Cache_Core</classname>.
271 <sect3 id="zend.cache.frontends.output.examples">
272 <title>Beispiele</title>
274 Ein Beispiel wird ganz am Anfang des Handbuches gegeben. Hier ist es mit kleinen
277 <programlisting language="php"><![CDATA[
278 // Wenn es ein Cache Miss ist, wird das puffern der Ausgabe ausgelöst
279 if( ! ($cache->start('mypage'))) {
281 // Alle wie gewohnt ausgeben
283 echo 'Das wird gecached ('.time().') ';
285 $cache->end(); // Ausgabepufferung beenden
289 echo 'Hier wird nie gecached ('.time().').';
292 Die Verwendung dieser Form ist ziemlich einfach, um Ausgabe caching in einem bereits
293 bestehenden Projekt, mit nur wenig oder gar keinen Codeänderungen, zu erhalten.
298 <sect2 id="zend.cache.frontends.function">
299 <title>Zend_Cache_Frontend_Function</title>
300 <sect3 id="zend.cache.frontends.function.introduction">
301 <title>Einführung</title>
303 <classname>Zend_Cache_Frontend_Function</classname> cached das Ergebnis von
304 Funktionsaufrufen. Es hat eine einzelne Hauptmethode genannt
305 <methodname>call()</methodname>, welche den Funktionsnamen und Parameter für den
306 Aufruf in einem Array entgegennimmt.
309 <sect3 id="zend.cache.frontends.function.options">
310 <title>Mögliche Optionen</title>
311 <table id="zend.cache.frontends.function.options.table">
312 <title>Cache Frontend Optionen</title>
316 <entry>Option</entry>
317 <entry>Daten Typ</entry>
318 <entry>Standardwert</entry>
319 <entry>Beschreibung</entry>
324 <entry><emphasis>cache_by_default</emphasis></entry>
325 <entry><type>Boolean</type></entry>
326 <entry><constant>TRUE</constant></entry>
328 Wenn <constant>TRUE</constant>, wird der Funktionsaufruf
329 standardmäßig gecached
333 <entry><emphasis>cached_functions</emphasis></entry>
334 <entry><type>Array</type></entry>
337 Funktionsnamen, die immer gecached werden sollen
341 <entry><emphasis>non_cached_functions</emphasis></entry>
342 <entry><type>Array</type></entry>
345 Funktionsnamen, die nie gecached werden sollen
353 <sect3 id="zend.cache.frontends.function.examples">
354 <title>Beispiele</title>
356 Die Verwendung der <methodname>call()</methodname> Funktion ist die gleiche, wie
357 die von <methodname>call_user_func_array()</methodname> in <acronym>PHP</acronym>:
359 <programlisting language="php"><![CDATA[
360 $cache->call('veryExpensiveFunc', $params);
362 // $params ist ein Array
363 // Für das Aufrufen von veryExpensiveFunc(1, 'foo', 'bar') mit Caching kann,
364 // z.B. $cache->call('veryExpensiveFunc', array(1, 'foo', 'bar')) benutzt
368 <classname>Zend_Cache_Frontend_Function</classname> ist elegant genug, um beides zu
369 cachen, den Rückgabewert der Funktion und deren interne Ausgabe.
372 Man kann jede eingebaute oder benutzerdefinierte Funktion übergeben, mit Ausnahme
373 von <methodname>array()</methodname>, <methodname>echo()</methodname>,
374 <methodname>empty()</methodname>, <methodname>eval()</methodname>,
375 <methodname>exit()</methodname>, <methodname>isset()</methodname>,
376 <methodname>list()</methodname>, <methodname>print()</methodname> und
377 <methodname>unset()</methodname>.
382 <sect2 id="zend.cache.frontends.class">
383 <title>Zend_Cache_Frontend_Class</title>
384 <sect3 id="zend.cache.frontends.class.introduction">
385 <title>Einführung</title>
387 <classname>Zend_Cache_Frontend_Class</classname> ist unterschiedlich zu
388 <classname>Zend_Cache_Frontend_Function</classname>, weil es das Cachen von Objekten
389 und statischen Methodenaufrufen erlaubt.
392 <sect3 id="zend.cache.frontends.class.options">
393 <title>Mögliche Optionen</title>
394 <table id="zend.cache.frontends.class.options.table">
395 <title>Class Frontend Optionen</title>
399 <entry>Option</entry>
400 <entry>Datentyp</entry>
401 <entry>Standardwert</entry>
402 <entry>Beschreibung</entry>
407 <entry><emphasis>cached_entity</emphasis> (Notwendig)</entry>
408 <entry><type>Mixed</type></entry>
411 Wenn auf einen Klassennamen gesetzt, wird eine abstrakte Klasse
412 gecached und es werden statische Aufrufe verwendet; wenn auf ein
413 Objekt gesetzt, wird deren Objektmethoden gecached
417 <entry><emphasis>cache_by_default</emphasis></entry>
418 <entry><type>Boolean</type></entry>
419 <entry><constant>TRUE</constant></entry>
421 Wenn <constant>TRUE</constant>, wird der Aufruf standardmäßig
426 <entry><emphasis>cached_methods</emphasis></entry>
427 <entry><type>Array</type></entry>
430 Methodennamen, die immer gecached werden sollen
434 <entry><emphasis>non_cached_methods</emphasis></entry>
435 <entry><type>Array</type></entry>
438 Methodennamen, die nie gecached werden sollen
446 <sect3 id="zend.cache.frontends.class.examples">
447 <title>Beispiele</title>
449 zum Beispiel, um einen statischen Aufruf zu cachen:
451 <programlisting language="php"><![CDATA[
455 public static function foobar($param1, $param2) {
456 echo "foobar_output($param1, $param2)";
457 return "foobar_return($param1, $param2)";
463 $frontendOptions = array(
464 'cached_entity' => 'Test' // Der Name der Klasse
468 // Der gecachte Aufruf
469 $result = $cache->foobar('1', '2');
472 Um klassische Methodenaufrufe zu cachen :
474 <programlisting language="php"><![CDATA[
477 private $_string = 'Hallo !';
479 public function foobar2($param1, $param2) {
480 echo($this->_string);
481 echo "foobar2_output($param1, $param2)";
482 return "foobar2_return($param1, $param2)";
488 $frontendOptions = array(
489 'cached_entity' => new Test() // Eine Instanz der Klasse
493 // Der gecachte Aufruf
494 $res = $cache->foobar2('1', '2');
499 <sect2 id="zend.cache.frontends.file">
500 <title>Zend_Cache_Frontend_File</title>
501 <sect3 id="zend.cache.frontends.file.introduction">
502 <title>Einführung</title>
504 <classname>Zend_Cache_Frontend_File</classname> ist ein Frontend angetrieben durch
505 den Änderungszeitpunkt einer "Masterdatei". Es ist wirklich interessant für
506 Beispiele in Konfigurations- oder Templateanwendungen. Es ist auch möglich mehrere
507 Masterdateien zu verwenden.
510 Zum Beispiel eine <acronym>XML</acronym> Konfigurationsdatei, welche von einer
511 Funktion geparsed wird und die ein "Config Objekt" zurückgibt (wie durch
512 <classname>Zend_Config</classname>). Mit
513 <classname>Zend_Cache_Frontend_File</classname> kann das "Config Objekt" im Cache
514 gespeichert werden (um zu Verhindern, das die <acronym>XML</acronym> Konfiguration
515 jedes mal geparsed wird), aber mit einer strengen Abhängigkeit zur "Masterdatei".
516 Wenn also die <acronym>XML</acronym> Konfigurationsdatei geändert wird, wird der
517 Cache sofort ungültig.
520 <sect3 id="zend.cache.frontends.file.options">
521 <title>Mögliche Optionen</title>
522 <table id="zend.cache.frontends.file.options.table">
523 <title>File Frontend Optionen</title>
527 <entry>Option</entry>
528 <entry>Daten Typ</entry>
529 <entry>Standardwert</entry>
530 <entry>Beschreibung</entry>
535 <entry><emphasis>master_File (depreciated)</emphasis></entry>
536 <entry><type>String</type></entry>
539 Der komplette Pfad und Name der Master Datei
543 <entry><emphasis>master_files</emphasis></entry>
544 <entry><type>Array</type></entry>
545 <entry><methodname>array()</methodname></entry>
547 Ein Array der kompletten Pfade der Masterdateien
551 <entry><emphasis>master_files_mode</emphasis></entry>
552 <entry><type>String</type></entry>
554 <constant>Zend_Cache_Frontend_File::MODE_OR</constant>
557 <constant>Zend_Cache_Frontend_File::MODE_AND</constant> oder
558 <constant>Zend_Cache_Frontend_File::MODE_OR</constant> ;
559 bei <constant>MODE_AND</constant> müssen alle Masterdateien
560 angegriffen werden um einen Cache ungültig zu machen, bei
561 <constant>MODE_OR</constant> ist eine eizelne angegriffene Datei
562 genug um den Cache ungültig zu machen
566 <entry><emphasis>ignore_missing_master_files</emphasis></entry>
567 <entry><type>Boolean</type></entry>
568 <entry><constant>FALSE</constant></entry>
570 bei <constant>TRUE</constant> werden fehlende Masterdateien leise
571 ignoriert (andernfalls wird eine Exception geworfen)
578 <sect3 id="zend.cache.frontends.file.examples">
579 <title>Beispiele</title>
581 Die Verwendung dieses Frontends ist die gleiche wie die von
582 <classname>Zend_Cache_Core</classname>. Es gibt kein eigenes Beispiel - was als
583 einziges gemacht werden muß, ist das <emphasis>master_File</emphasis> zu
584 definieren, wenn die Factory verwendet wird.
589 <sect2 id="zend.cache.frontends.page">
590 <title>Zend_Cache_Frontend_Page</title>
591 <sect3 id="zend.cache.frontends.page.introduction">
592 <title>Einführung</title>
594 <classname>Zend_Cache_Frontend_Page</classname> ist wie
595 <classname>Zend_Cache_Frontend_Output</classname> aber entwickelt für eine komplette
596 Seite. Es ist unmöglich <classname>Zend_Cache_Frontend_Page</classname> nur für das
597 Cachen eines einzelnen Blockes zu verwenden.
600 Andererseits wird die "Cache ID" automatisch berechnet mit
601 <varname>$_SERVER['REQUEST_URI']</varname> und (abhängig von den Optionen) mit
602 <varname>$_GET</varname>, <varname>$_POST</varname>, <varname>$_SESSION</varname>,
603 <varname>$_COOKIE</varname>, <varname>$_FILES</varname>. Trotzdem muß nur eine
604 Methode aufgerufen werden (<methodname>start()</methodname>), weil der Aufruf von
605 <methodname>end()</methodname> immer vollautomatisch ist, wenn die Seite endet.
608 Zur Zeit ist es nicht eingebaut, aber es ist ein <acronym>HTTP</acronym> abhängiges
609 System geplant, um Bandbreiten zu sparen (das System wird ein
610 "<acronym>HTTP</acronym> 304 nicht geändert" schicken, wenn der Cache gefunden
611 wurde und wenn der Browser bereits eine gültige Version hat).
616 Dieses Frontend arbeitet indem es eine Callback Funktion registriert welche
617 aufgerufen wird wenn das Buffern der Ausgabe welches es verwendet, gelöscht
618 wird. Damit dies korrekt arbeitet muss es der letzte Ausgabebuffer in der
619 Anfrage sein. Um dies zu garantieren muss der Ausgabebuffer, den der Dispatcher
620 verwendet, deaktiviert sein indem die <methodname>setParam()</methodname>
621 Methode von <classname>Zend_Controller_Front</classname> verwendet wird. Zum
622 Beispiel $front->setParam('disableOutputBuffering', true) oder durch hinzufügen
623 von "resources.frontcontroller.params.disableOutputBuffering = true" zum eigenen
624 Konfigurationsdatei der Bootstrap (INI angenommen) wenn
625 <classname>Zend_Application</classname> verwendet wird.
630 <sect3 id="zend.cache.frontends.page.options">
631 <title>Mögliche Optionen</title>
632 <table id="zend.cache.frontends.page.options.table">
633 <title>Page Frontend Optionen</title>
637 <entry>Option</entry>
638 <entry>Daten Typ</entry>
639 <entry>Standardwert</entry>
640 <entry>Beschreibung</entry>
645 <entry><emphasis>http_conditional</emphasis></entry>
646 <entry><type>Boolean</type></entry>
647 <entry><constant>FALSE</constant></entry>
649 Verwendung des http_conditional Systems (zur Zeit nicht
654 <entry><emphasis>debug_header</emphasis></entry>
655 <entry><type>Boolean</type></entry>
656 <entry><constant>FALSE</constant></entry>
658 Wenn <constant>TRUE</constant>, wird ein Debugging Text vor
659 jeder gecacheten Seite hinzugefügt
663 <entry><emphasis>default_options</emphasis></entry>
664 <entry><type>Array</type></entry>
665 <entry><methodname>array(...siehe unten...)</methodname></entry>
667 Ein assoziatives Array mit Standard Optionen:
671 <emphasis>(boolean, <constant>TRUE</constant> per
672 Default) cache</emphasis>: Cache ist aktiviert
673 wenn <constant>TRUE</constant>
678 <emphasis>(boolean, <constant>FALSE</constant> per
679 Default) cache_with_get_variables</emphasis>: wenn
680 <constant>TRUE</constant>, ist der Cache weiterhin
681 aktiviert, selbst wenn es einige Variablen im
682 <varname>$_GET</varname> Array gibt
687 <emphasis>(boolean, <constant>FALSE</constant> per
688 Default) cache_with_post_variables</emphasis>:
689 wenn <constant>TRUE</constant>, ist der Cache
690 weiterhin aktiviert, selbst wenn es einige Variablen
691 im <varname>$_POST</varname> Array gibt
696 <emphasis>(boolean, <constant>FALSE</constant> per
697 Default) cache_with_session_variables</emphasis>:
698 wenn <constant>TRUE</constant>, ist der Cache
699 weiterhin aktiviert, selbst wenn es einige Variablen
700 im <varname>$_SESSION</varname> Array gibt
705 <emphasis>(boolean, <constant>FALSE</constant> per
706 Default) cache_with_files_variables</emphasis>:
707 wenn <constant>TRUE</constant>, ist der Cache
708 weiterhin aktiviert, selbst wenn es einige Variablen
709 im <varname>$_FILES</varname> Array gibt
714 <emphasis>(boolean, <constant>FALSE</constant> per
715 Default) cache_with_cookie_variables</emphasis>:
716 wenn <constant>TRUE</constant>, ist der Cache
717 weiterhin aktiviert, selbst wenn es einige Variablen
718 im <varname>$_COOKIE</varname> Array gibt
723 <emphasis>(boolean, <constant>TRUE</constant> per
724 Default) make_id_with_get_variables</emphasis>:
725 wenn <constant>TRUE</constant>, wird die Cache ID vom
726 Inhalt des <varname>$_GET</varname> Arrays abhängig
732 <emphasis>(boolean, <constant>TRUE</constant> per
733 Default) make_id_with_post_variables</emphasis>:
734 wenn <constant>TRUE</constant>, wird die Cache ID vom
735 Inhalt des <varname>$_POST</varname> Arrays abhängig
741 <emphasis>(boolean, <constant>TRUE</constant> per
743 make_id_with_session_variables</emphasis>: wenn
744 <constant>TRUE</constant>, wird die Cache ID vom
745 Inhalt des <varname>$_SESSION</varname> Arrays
751 <emphasis>(boolean, <constant>TRUE</constant> per
752 Default) make_id_with_files_variables</emphasis>:
753 wenn <constant>TRUE</constant>, wird die Cache ID vom
754 Inhalt des <varname>$_FILES</varname> Arrays abhängig
760 <emphasis>(boolean, <constant>TRUE</constant> per
761 Default) make_id_with_cookie_variables</emphasis>:
762 wenn <constant>TRUE</constant>, wird die Cache ID vom
763 Inhalt des <varname>$_COOKIE</varname> Arrays
769 <emphasis>(int, <constant>FALSE</constant> by default)
770 specific_lifetime</emphasis>: wenn nicht
771 <constant>FALSE</constant>, wird die angegebene
772 Lifetime für das ausgewählte Regex verwendet
777 <emphasis>(array, <methodname>array()</methodname> by
778 default) tags</emphasis>: Tags für den Cache
784 <emphasis>(int, <constant>NULL</constant> by default)
785 priority</emphasis>: Priorität (wenn das Backend
793 <entry><emphasis>regexps</emphasis></entry>
794 <entry><type>Array</type></entry>
795 <entry><methodname>array()</methodname></entry>
797 Ein assoziatives Array, um Optionen nur für einige
798 <constant>REQUEST_URI</constant> zu setzen. Die Schlüssel sind
799 reguläre Ausdrücke (<acronym>PCRE</acronym>), die Werte sind
800 ein assoziatives Array mit spezifischen Optionen, die gesetzt
801 werden sollen, wenn der reguläre Ausdruck auf
802 <varname>$_SERVER['REQUEST_URI']</varname> passt (siehe die
803 default_options für eine Liste der verfügbaren Optionen); wenn
804 verschiedene reguläre Ausdrücke auf
805 <varname>$_SERVER['REQUEST_URI']</varname> passen, wird nur der
810 <entry><emphasis>memorize_headers</emphasis></entry>
811 <entry><type>Array</type></entry>
812 <entry><methodname>array()</methodname></entry>
814 Ein Array von Strings die zu einem <acronym>HTTP</acronym>
815 Headernamen korrespondieren. Aufgelistete Header werden mit den
816 Cache Daten gespeichert und wieder "abgespielt" wenn der Cache
824 <sect3 id="zend.cache.frontends.page.examples">
825 <title>Beispiele</title>
827 Die Verwendung von <classname>Zend_Cache_Frontend_Page</classname> ist wirklich
830 <programlisting language="php"><![CDATA[
831 // [...] // Benötigt, Konfiguration und Factory
834 // Wenn der Cache gefunden wurde, wird das Ergebnis zum Browser geschickt,
835 // und das Skript stoppt hier
837 // Rest der Seite ...
840 Ein etwas komplexeres Beispiel, welches einen Weg zeigt, um ein zentralisiertes
841 Cache Management in einer Bootstrap Datei zu erhalten (um es z.B. mit
842 <classname>Zend_Controller</classname> zu verwenden)
844 <programlisting language="php"><![CDATA[
846 * Es sollte vermieden werden, zu viele Zeilen vor dem Cache Bereich zu setzen
847 * zum Beispiel sollten für optimale Performanz "require_once" oder
848 * "Zend_Loader::loadClass" nach dem Cache Bereich stehen
851 $frontendOptions = array(
853 'debug_header' => true, // für das Debuggen
855 // cache den gesamten IndexController
856 '^/$' => array('cache' => true),
858 // cache den gesamten IndexController
859 '^/index/' => array('cache' => true),
861 // wir cachen nicht den ArticleController...
862 '^/article/' => array('cache' => false),
864 // ...aber wir cachen die "View" Aktion von diesem ArticleController
865 '^/article/view/' => array(
868 // und wir cachen sogar wenn es einige Variablen in $_POST gibt
869 'cache_with_post_variables' => true,
871 // aber die Cache Id wird vom $_POST Array abhängig sein
872 'make_id_with_post_variables' => true,
877 $backendOptions = array(
878 'cache_dir' => '/tmp/'
881 // erhalte ein Zend_Cache_Frontend_Page Objekt
882 $cache = Zend_Cache::factory('Page',
889 // Wenn der Cache gefunden wurde, wird das Ergebnis zum Browser geschickt,
890 // und das Skript stoppt hier
892 // [...] das Ende der Bootstrap Datei
893 // diese Zeilen werden nicht ausgeführt, wenn der Cache ausgegeben wurde
896 <sect3 id="zend.cache.frontends.page.cancel">
897 <title>Die spezielle cancel Methode</title>
899 Aus Designgründen, kann es in einigen Fällen (zum Beispiel bei Verwendung von nicht
900 <acronym>HTTP</acronym> 200 Return Codes), notwendig sein den aktuellen
901 Cacheprozess zu unterbrechen. Deshalb zeigen wir für dieses spezielle Frontend die
902 <methodname>cancel()</methodname> Methode.
904 <programlisting language="php"><![CDATA[
905 // [...] // Benötigt, Konfiguration und Factory