PageRenderTime 21ms CodeModel.GetById 8ms app.highlight 7ms RepoModel.GetById 1ms app.codeStats 0ms

/documentation/manual/de/module_specs/Zend_Cache-Backends.xml

https://github.com/decaoz/zf1
XML | 834 lines | 816 code | 16 blank | 2 comment | 0 complexity | c47dcef643edc87609ee5ea3ee6b74fc MD5 | raw file
  1<?xml version="1.0" encoding="UTF-8"?>
  2<!-- EN-Revision: 22140 -->
  3<!-- Reviewed: no -->
  4<sect1 id="zend.cache.backends">
  5    <title>Zend_Cache Backends</title>
  6
  7    <para>
  8        Es gibt zwei Arten von Backends: Standard und erweiterte. Natürlich bieten erweiterte
  9        Backends mehr Features.
 10    </para>
 11
 12    <sect2 id="zend.cache.backends.file">
 13        <title>Zend_Cache_Backend_File</title>
 14
 15        <para>
 16            Dieses (erweiterte) Backend speichert Cache Datensätze in Dateien (in einem gewählten
 17            Verzeichnis).
 18        </para>
 19
 20        <para>
 21            Mögliche Optionen sind :
 22        </para>
 23
 24        <table id="zend.cache.backends.file.table">
 25            <title>File Backend Optionen</title>
 26
 27            <tgroup cols="4">
 28                <thead>
 29                    <row>
 30                        <entry>Option</entry>
 31                        <entry>Daten Typ</entry>
 32                        <entry>Standardwert</entry>
 33                        <entry>Beschreibung</entry>
 34                    </row>
 35                </thead>
 36
 37                <tbody>
 38                    <row>
 39                        <entry><emphasis>cache_dir</emphasis></entry>
 40                        <entry><type>String</type></entry>
 41                        <entry>'<filename>/tmp/</filename>'</entry>
 42
 43                        <entry>
 44                            Verzeichnis, in dem die Cache Dateien gespeichert werden
 45                        </entry>
 46                    </row>
 47
 48                    <row>
 49                        <entry><emphasis>file_locking</emphasis></entry>
 50                        <entry><type>Boolean</type></entry>
 51                        <entry><constant>TRUE</constant></entry>
 52
 53                        <entry>
 54                            Ein- oder Ausschalten von file_locking: kann die Beschädigung des
 55                            Caches unter schlechten Bedingungen verhindern, aber es hilft nicht bei
 56                            Multithreaded Webservern oder bei <acronym>NFS</acronym>
 57                            Filesystemen...
 58                        </entry>
 59                    </row>
 60
 61                    <row>
 62                        <entry><emphasis>read_control</emphasis></entry>
 63                        <entry><type>Boolean</type></entry>
 64                        <entry><constant>TRUE</constant></entry>
 65
 66                        <entry>
 67                            Ein- oder Ausschalten von read_control: eingeschaltet wird ein
 68                            Kontrollschlüssel im Cache File inkludiert und dieser Schlüssel wird mit
 69                            dem Schlüssel verglichen, der nach dem Lesen berechnet wird.
 70                        </entry>
 71                    </row>
 72
 73                    <row>
 74                        <entry><emphasis>read_control_type</emphasis></entry>
 75                        <entry><type>String</type></entry>
 76                        <entry>'crc32'</entry>
 77
 78                        <entry>
 79                            Typ der Schreibkontrolle (nur wenn read_control eingeschaltet ist).
 80                            Mögliche Werte sind : 'md5' (bestes, aber am Langsamsten), 'crc32'
 81                            (etwas weniger sicher, aber schneller, beste Wahl), 'adler32' (neue
 82                            Wahl, schneller als crc32), 'strlen' um nur die Länge zu testen
 83                            (schnellstes).
 84                        </entry>
 85                    </row>
 86
 87                    <row>
 88                        <entry><emphasis>hashed_directory_level</emphasis></entry>
 89                        <entry><type>Integer</type></entry>
 90                        <entry>0</entry>
 91
 92                        <entry>
 93                            Level der gehashten Verzeichnis Struktur: 0 heißt "keine gehashte
 94                            Verzeichnis Strutur, 1 heißt "ein Level von Verzeichnissen", 2 heißt
 95                            "zwei Levels"... Diese Option kann den Cache nur dann schneller machen,
 96                            wenn viele Tausende Cache Dateien verwendet werden. Nur spezielle
 97                            Messungen können helfen, den perfekten Wert zu finden. Möglicherweise
 98                            ist 1 oder 2 ein guter Anfang.
 99                        </entry>
100                    </row>
101
102                    <row>
103                        <entry><emphasis>hashed_directory_umask</emphasis></entry>
104                        <entry><type>Integer</type></entry>
105                        <entry>0700</entry>
106                        <entry>Umask für die gehashte Verzeichnis Struktur</entry>
107                    </row>
108
109                    <row>
110                        <entry><emphasis>file_name_prefix</emphasis></entry>
111                        <entry><type>String</type></entry>
112                        <entry>'zend_cache'</entry>
113
114                        <entry>
115                            Präfix für Cache Dateien; man muss mit dieser Option sehr vorsichtig
116                            umgehen, weil ein zu generischer Wert in einem System Cache
117                            Verzeichnis (wie <filename>/tmp</filename>) kann beim Löschen des
118                            Caches zu großen Problemen führen.
119                        </entry>
120                    </row>
121
122                    <row>
123                        <entry><emphasis>cache_file_umask</emphasis></entry>
124                        <entry><type>Integer</type></entry>
125                        <entry>0700</entry>
126                        <entry>umask nach Cache Dateien</entry>
127                    </row>
128
129                    <row>
130                        <entry><emphasis>metatadatas_array_max_size</emphasis></entry>
131                        <entry><type>Integer</type></entry>
132                        <entry>100</entry>
133                        <entry>
134                            Interne maximale Größe für das Metadaten Array (dieser Wert sollte
135                            nicht geändert werden außer man weiß was man macht)
136                        </entry>
137                    </row>
138                </tbody>
139            </tgroup>
140        </table>
141    </sect2>
142
143    <sect2 id="zend.cache.backends.sqlite">
144        <title>Zend_Cache_Backend_Sqlite</title>
145
146        <para>
147            Dieses (erweiterte) Backend speichert die Cache Datensätze in einer SQLite Datenbank.
148        </para>
149
150        <para>
151            Mögliche Optionen sind :
152        </para>
153
154        <table id="zend.cache.backends.sqlite.table">
155            <title>Sqlite Backend Optionen</title>
156
157            <tgroup cols="4">
158                <thead>
159                    <row>
160                        <entry>Option</entry>
161                        <entry>Daten Typ</entry>
162                        <entry>Standardwert</entry>
163                        <entry>Beschreibung</entry>
164                    </row>
165                </thead>
166
167                <tbody>
168                    <row>
169                        <entry><emphasis>cache_db_complete_path (mandatory)</emphasis></entry>
170                        <entry><type>String</type></entry>
171                        <entry><constant>NULL</constant></entry>
172                        <entry>Der komplette Pfad (inklusive Dateiname) der SQLite Datenbank</entry>
173                    </row>
174
175                    <row>
176                        <entry><emphasis>automatic_vacuum_factor</emphasis></entry>
177                        <entry><type>Integer</type></entry>
178                        <entry>10</entry>
179
180                        <entry>
181                            Deaktiviert oder stellt den automatischen Vakuumprozess ein.
182                            Der automatische Vakuumprozess defragmentiert die Datenbankdatei (und
183                            verkleinert sie) wenn <methodname>clean()</methodname> oder
184                            <methodname>delete()</methodname> aufgerufen wird: 0 bedeutet kein
185                            automatisches Vakuum; 1 bedeutet systematisches Vakuum (wenn die
186                            <methodname>delete()</methodname> or <methodname>clean()</methodname>
187                            Methoden aufgerufen werden; x (integer) > 1 => automatisches Vakuum
188                            zufällig einmal pro x <methodname>clean()</methodname> oder
189                            <methodname>delete()</methodname> Aufrufe.
190                        </entry>
191                    </row>
192                </tbody>
193            </tgroup>
194        </table>
195    </sect2>
196
197    <sect2 id="zend.cache.backends.memcached">
198        <title>Zend_Cache_Backend_Memcached</title>
199
200        <para>
201            Dieses (erweiterte) Backend speichert Cache Datensätze in einem Memcached Server. <ulink
202                url="http://www.danga.com/memcached/">memcached</ulink> ist ein hoch-performantes,
203            verteiltes Speicher Objekt Caching System. Um dieses Backend zu benutzen, wird ein
204            Memcached Dämon benötigt und <ulink url="http://pecl.php.net/package/memcache">die
205                Memcached <acronym>PECL</acronym> Erweiterung</ulink>.
206        </para>
207
208        <para>
209            Vorsicht: mit diesem Backend werden zur Zeit "Marker" nicht unterstützt genauso wie das
210            "doNotTestCacheValidity=true" Argument.
211        </para>
212
213        <para>
214            Mögliche Optionen sind :
215        </para>
216
217        <table id="zend.cache.backends.memcached.table">
218            <title>Memcached Backend Optionen</title>
219
220            <tgroup cols="4">
221                <thead>
222                    <row>
223                        <entry>Option</entry>
224                        <entry>Daten Typ</entry>
225                        <entry>Standardwert</entry>
226                        <entry>Beschreibung</entry>
227                    </row>
228                </thead>
229
230                <tbody>
231                    <row>
232                        <entry><emphasis>servers</emphasis></entry>
233                        <entry><type>Array</type></entry>
234
235                        <entry>
236                            <command>array(array('host' => 'localhost','port' => 11211,
237                                'persistent' => true, 'weight' => 1, 'timeout' => 5,
238                                'retry_interval' => 15, 'status' => true,
239                                'failure_callback' => '' ))</command>
240                        </entry>
241
242                        <entry>
243                            Ein Array von Memcached Servern; jeder Memcached Server wird durch ein
244                            assoziatives Array beschrieben : 'host' => (string) : Der Name des
245                            Memcached Servers, 'port' => (int) : Der Port des Memcached Servers,
246                            'persistent' => (bool) : Persistente Verbindungen für diesen Memcached
247                            Server verwenden oder nicht 'weight' => (int) : Das Gewicht des
248                            Memcached Servers, 'timeout' => (int) : Das Timeout des Memcached
249                            Servers, 'retry_interval' => (int) : Das Wiederholungsintervall des
250                            Memcached Servers, 'status' => (bool) : Der Status des Memcached
251                            Servers, 'failure_callback' => (callback) : Der failure_callback des
252                            Memcached Servers
253                        </entry>
254                    </row>
255
256                    <row>
257                        <entry><emphasis>compression</emphasis></entry>
258                        <entry><type>Boolean</type></entry>
259                        <entry><constant>FALSE</constant></entry>
260
261                        <entry>
262                            <constant>TRUE</constant> wenn on-the-fly Kompression verwendet werden
263                            soll
264                        </entry>
265                    </row>
266
267                    <row>
268                        <entry><emphasis>compatibility</emphasis></entry>
269                        <entry><type>Boolean</type></entry>
270                        <entry><constant>FALSE</constant></entry>
271
272                        <entry>
273                            <constant>TRUE</constant> wenn man den Compatibility Modus mit alten
274                            Memcache Servern oder Erweiterungen verwenden will
275                        </entry>
276                    </row>
277                </tbody>
278            </tgroup>
279        </table>
280    </sect2>
281
282    <sect2 id="zend.cache.backends.apc">
283        <title>Zend_Cache_Backend_Apc</title>
284
285        <para>
286            Dieses (erweiterte) Backend speichert Cache Datensätze im Shared Memory durch die
287            <ulink url="http://pecl.php.net/package/APC">APC</ulink> (Alternativer
288            <acronym>PHP</acronym> Cache) Erweiterung (welche natürlich für die Verwendung dieses
289            Backends benötigt wird).
290        </para>
291
292        <para>
293            Vorsicht: mit diesem Backend werden "Marker" zur Zeit nicht unterstützt genauso wie das
294            "doNotTestCacheValidity=true" Argument.
295        </para>
296
297        <para>
298            Es gibt keine Optionen für dieses Backend.
299        </para>
300    </sect2>
301
302    <sect2 id="zend.cache.backends.xcache">
303        <title>Zend_Cache_Backend_Xcache</title>
304
305        <para>
306            Dieses Backend speichert Cache Einträge im Shared Memory durch die
307            <ulink url="http://xcache.lighttpd.net/">XCache</ulink> Erweiterung (welche natürlich
308            benötigt wird, damit dieses Backend verwendet werden kann).
309        </para>
310
311        <para>
312            Achtung: Bei diesem Backend werden "tags" aktuell nicht unterstützt sowie das
313            "doNotTestCacheValidity=true" Argument.
314        </para>
315
316        <para>
317            Mögliche Optionen sind:
318        </para>
319
320        <table id="zend.cache.backends.xcache.table">
321            <title>Xcache backend options</title>
322
323            <tgroup cols="4">
324                <thead>
325                    <row>
326                        <entry>Option</entry>
327                        <entry>Daten Typ</entry>
328                        <entry>Standardwert</entry>
329                        <entry>Beschreibung</entry>
330                    </row>
331                </thead>
332
333                <tbody>
334                    <row>
335                        <entry><emphasis>user</emphasis></entry>
336                        <entry><type>String</type></entry>
337                        <entry><constant>NULL</constant></entry>
338
339                        <entry>
340                            <filename>xcache.admin.user</filename>, notwendig für die
341                            <methodname>clean()</methodname> Methode
342                        </entry>
343                    </row>
344
345                    <row>
346                        <entry><emphasis>password</emphasis></entry>
347                        <entry><type>String</type></entry>
348                        <entry><constant>NULL</constant></entry>
349
350                        <entry>
351                            <filename>xcache.admin.pass</filename> (in offener Form, nicht
352                            <acronym>MD5</acronym>), notwendig für die
353                            <methodname>clean()</methodname> Methode
354                        </entry>
355                    </row>
356                </tbody>
357            </tgroup>
358        </table>
359    </sect2>
360
361    <sect2 id="zend.cache.backends.platform">
362        <title>Zend_Cache_Backend_ZendPlatform</title>
363
364        <para>
365            Dieses Backend verwendet die Content Caching <acronym>API</acronym> des
366            <ulink url="http://www.zend.com/en/products/platform">Zend Platform</ulink> Produktes.
367            Natürlich muss man die Zend Platform installiert haben, um dieses Backend verwenden zu
368            können.
369        </para>
370
371        <para>
372            Dieses Backend unterstützt Tags, aber nicht den
373            <constant>CLEANING_MODE_NOT_MATCHING_TAG</constant> Löschmodus.
374        </para>
375
376        <para>
377            Bei Definition dieses Backends muß ein Trennzeichen -- '-', '.', ' ', oder '_'
378            -- zwischen den Wörtern 'Zend' und 'Platform' definiert sein wenn die
379            <methodname>Zend_Cache::factory()</methodname> Methode verwendet wird:
380        </para>
381
382        <programlisting language="php"><![CDATA[
383$cache = Zend_Cache::factory('Core', 'Zend Platform');
384]]></programlisting>
385
386        <para>
387            Es gibt keine Optionen für dieses Backend.
388        </para>
389    </sect2>
390
391    <sect2 id="zend.cache.backends.twolevels">
392        <title>Zend_Cache_Backend_TwoLevels</title>
393
394        <para>
395            Dieses (erweiterte) Backend ist ein Hybrides. Es speichert Cache Einträge in zwei
396            anderen Backends: Ein schnelles (aber limitiertes) wie Apc, Memcache... und ein
397            "langsames" wie File, Sqlite...
398        </para>
399
400        <para>
401            Dieses Backend verwendet den Priority Parameter (der auf Frontend Level angegeben wird
402            wenn ein Eintrag gespeichert wird) und den verbleibenden Platz im schnellen Backend um
403            die Verwendung dieser zwei Backends zu optimieren.
404        </para>
405
406        <para>
407            Dieses Backend sollte mit Verwendung eines Word Separators -- '-', '.', ' ', oder '_' --
408            zwischen den Wörtern 'Two' und 'Levels' spezifiziert werden wenn die
409            <methodname>Zend_Cache::factory()</methodname> Methode verwendet wird:
410        </para>
411
412        <programlisting language="php"><![CDATA[
413$cache = Zend_Cache::factory('Core', 'Two Levels');
414]]></programlisting>
415
416        <para>
417            Vorhandene Optionen sind:
418        </para>
419
420        <table id="zend.cache.backends.twolevels.table">
421            <title>TwoLevels Backend Optionen</title>
422
423            <tgroup cols="4">
424                <thead>
425                    <row>
426                        <entry>Option</entry>
427                        <entry>Datentyp</entry>
428                        <entry>Standardwert</entry>
429                        <entry>Beschreibung</entry>
430                    </row>
431                </thead>
432
433                <tbody>
434                    <row>
435                        <entry><emphasis>slow_backend</emphasis></entry>
436                        <entry><type>String</type></entry>
437                        <entry>File</entry>
438                        <entry>Der "langsame" Backendname</entry>
439                    </row>
440
441                    <row>
442                        <entry><emphasis>fast_backend</emphasis></entry>
443                        <entry><type>String</type></entry>
444                        <entry>Apc</entry>
445                        <entry>Der "schnelle" Backendname</entry>
446                    </row>
447
448                    <row>
449                        <entry><emphasis>slow_backend_options</emphasis></entry>
450                        <entry><type>Array</type></entry>
451                        <entry><methodname>array()</methodname></entry>
452                        <entry>Die "langsamen" Backendoptionen</entry>
453                    </row>
454
455                    <row>
456                        <entry><emphasis>fast_backend_options</emphasis></entry>
457                        <entry><type>Array</type></entry>
458                        <entry><methodname>array()</methodname></entry>
459                        <entry>Die "schnellen" Backendoptionen</entry>
460                    </row>
461
462                    <row>
463                        <entry><emphasis>slow_backend_custom_naming</emphasis></entry>
464                        <entry><type>Boolean</type></entry>
465                        <entry><constant>FALSE</constant></entry>
466
467                        <entry>
468                            Wenn <constant>TRUE</constant>, wird das slow_backend Argument als
469                            kompletter Klassenname verwendet; wenn <constant>FALSE</constant>,
470                            wird das frontend Argument als Ende des
471                            "<classname>Zend_Cache_Backend_</classname>[...]" Klassennamens
472                            verwendet
473                        </entry>
474                    </row>
475
476                    <row>
477                        <entry><emphasis>fast_backend_custom_naming</emphasis></entry>
478                        <entry><type>Boolean</type></entry>
479                        <entry><constant>FALSE</constant></entry>
480
481                        <entry>
482                            Wenn <constant>TRUE</constant>, wird das fast_backend Argument als
483                            kompletter Klassenname verwendet; wenn <constant>FALSE</constant>,
484                            wird das frontend Argument als Ende des
485                            "<classname>Zend_Cache_Backend_</classname>[...]" Klassennamens
486                            verwendet
487                        </entry>
488                    </row>
489
490                    <row>
491                        <entry><emphasis>slow_backend_autoload</emphasis></entry>
492                        <entry><type>Boolean</type></entry>
493                        <entry><constant>FALSE</constant></entry>
494
495                        <entry>
496                            Wenn <constant>TRUE</constant>, wird kein require_once für das
497                            langsame Backend verwendet (nur für eigene Backends nützlich)
498                        </entry>
499                    </row>
500
501                    <row>
502                        <entry><emphasis>fast_backend_autoload</emphasis></entry>
503                        <entry><type>Boolean</type></entry>
504                        <entry><constant>FALSE</constant></entry>
505
506                        <entry>
507                            Wenn <constant>TRUE</constant>, wird kein require_once für das
508                            schnelle Backend verwendet (nur für eigene Backends nützlich)
509                        </entry>
510                    </row>
511
512                    <row>
513                        <entry><emphasis>auto_refresh_fast_cache</emphasis></entry>
514                        <entry><type>Boolean</type></entry>
515                        <entry><constant>TRUE</constant></entry>
516
517                        <entry>
518                            Wenn <constant>TRUE</constant>, wird der schnelle Cache automatisch
519                            refresht wenn ein Cache Eintrag getroffen wird
520                        </entry>
521                    </row>
522
523                    <row>
524                        <entry><emphasis>stats_update_factor</emphasis></entry>
525                        <entry><type>Integer</type></entry>
526                        <entry>10</entry>
527
528                        <entry>
529                            Ausschalten / Feintunen der Berechnung des Füll-Prozentsatzes des
530                            schnellen Backends (wenn ein Eintrag in den Cache gespeichert wird,
531                            die Berechnung des Füll-Prozentsatzes des schnellen Backends zufällig
532                            1 mal bei x Cache Schreibvorgängen)
533                        </entry>
534                    </row>
535                </tbody>
536            </tgroup>
537        </table>
538    </sect2>
539
540    <sect2 id="zend.cache.backends.zendserver">
541        <title>Zend_Cache_Backend_ZendServer_Disk und Zend_Cache_Backend_ZendServer_ShMem</title>
542
543        <para>
544            Diese Backends speichern Cacheeinträge indem Sie die Caching Funktionalitäten von <ulink
545                url="http://www.zend.com/en/products/server/downloads-all?zfs=zf_download">Zend
546                Server</ulink> verwenden.
547        </para>
548
549        <para>
550            Achtung: mit diesen Backends werden für den Moment "Tags" nicht unterstützt, wegen dem
551            "doNotTestCacheValidity=true" Argument.
552        </para>
553
554        <para>
555            Diese Backends arbeiten nur in einer Zend Server Umgebung für Seiten die über
556            <acronym>HTTP</acronym> oder <acronym>HTTPS</acronym> angefragt wurden und nicht für
557            Kommandozeilen Ausführung.
558        </para>
559
560        <para>
561            Dieses Backend muß durch Verwendung des <emphasis>customBackendNaming</emphasis>
562            Parameter mit <constant>TRUE</constant> spezifiziert werden wenn die Methode
563            <methodname>Zend_Cache::factory()</methodname> verwendet wird:
564        </para>
565
566        <programlisting language="php"><![CDATA[
567$cache = Zend_Cache::factory('Core', 'Zend_Cache_Backend_ZendServer_Disk',
568                             $frontendOptions, $backendOptions, false, true);
569]]></programlisting>
570
571        <para>
572            Es gibt keine Optionen für diese Backends.
573        </para>
574    </sect2>
575
576    <sect2 id="zend.cache.backends.static">
577        <title>Zend_Cache_Backend_Static</title>
578
579        <para>
580            Dieses Backend arbeitet in Verbindung mit
581            <classname>Zend_Cache_Frontend_Capture</classname> (diese zwei müssen zusammen verwendet
582            werden) um die Ausgabe von Anfragen als statische Dateien zu speichern. Dies bedeutet
583            das die statischen Dateien bei weiteren Anfragen direkt serviert werden ohne dass
584            <acronym>PHP</acronym> oder sogar Zend Framework involviert sind.
585        </para>
586
587        <note>
588            <para>
589                <classname>Zend_Cache_Frontend_Capture</classname> arbeitet indem es eine Callback
590                Funktion registriert welche aufgerufen wird wenn der Ausgabebuffer den es verwendet
591                gelöscht wird. Damit das richtig funktioniert muss er der letzte Ausgabebuffer in
592                der Anfrage sein. Um dies zu garantieren <emphasis>muss</emphasis> der Ausgabebuffer
593                welcher vom Dispacher verwendet wird ausgeschaltet sein indem
594                <classname>Zend_Controller_Front</classname>'s Methode
595                <methodname>setParam()</methodname> verwendet wird, zum Beispiel
596                <command>$front->setParam('disableOutputBuffering', true);</command> oder indem
597                "resources.frontcontroller.params.disableOutputBuffering = true" in der Bootstrap
598                Konfigurationsdatei (wir nehmen <acronym>INI</acronym> an) wenn
599                <classname>Zend_Application</classname> verwendet wird.
600            </para>
601        </note>
602
603        <para>
604            Der Vorteil dieses Caches besteht darin das eine starke Verbesserung des Durchsatzes
605            stattfindet weil statische Dateien zurückgegeben werden und keine weitere dynamische
606            Bearbeitung stattfindet. Natürlich gibt es auch einige Nachteile. Der einzige Weg um
607            dynamische Anfragen wieder zu haben besteht darin die gecachten Dateien von anderswo
608            in der Anwendung zu löschen (oder über einen Cronjob wenn das zeitlich abgestimmt werden
609            soll). Es ist auch auf Single-Server Anwendungen begrenzt begrenzt bei denen nur ein
610            Dateisystem verwendet wird. Trotzdem kann es eine große Bedeutung haben wenn man mehr
611            Geschwindigkeit haben will ohne auf Kosten eines Proxies auf einzelnen Maschinen zu
612            setzen.
613        </para>
614
615        <para>
616            Bevor die Optionen beschrieben werden sollte man beachten das dies einige Änderungen der
617            Standardwerte in der <filename>.htaccess</filename> Datei benötigt damit Anfrage auf die
618            staischen Dateien zeigen wenn diese existieren. Hier ist ein Beispiel einer einfachen
619            Anwendung die etwas Inhalt cacht, inklusive zwei spezifischer Feeds welche zusätzliche
620            Behandlung benötigen um einen korrekten Content-Type Header zu schicken:
621        </para>
622
623        <programlisting language="text"><![CDATA[
624AddType application/rss+xml .xml
625AddType application/atom+xml .xml
626
627RewriteEngine On
628
629RewriteCond %{REQUEST_URI} feed/rss$
630RewriteCond %{DOCUMENT_ROOT}/cached/%{REQUEST_URI}.xml -f
631RewriteRule .* cached/%{REQUEST_URI}.xml [L,T=application/rss+xml]
632
633RewriteCond %{REQUEST_URI} feed/atom$
634RewriteCond %{DOCUMENT_ROOT}/cached/%{REQUEST_URI}.xml -f
635RewriteRule .* cached/%{REQUEST_URI}.xml [L,T=application/atom+xml]
636
637RewriteCond %{DOCUMENT_ROOT}/cached/index.html -f
638RewriteRule ^/*$ cached/index.html [L]
639RewriteCond %{DOCUMENT_ROOT}/cached/%{REQUEST_URI}.(html|xml|json|opml|svg) -f
640RewriteRule .* cached/%{REQUEST_URI}.%1 [L]
641
642RewriteCond %{REQUEST_FILENAME} -s [OR]
643RewriteCond %{REQUEST_FILENAME} -l [OR]
644RewriteCond %{REQUEST_FILENAME} -d
645RewriteRule ^.*$ - [NC,L]
646
647RewriteRule ^.*$ index.php [NC,L]
648]]></programlisting>
649
650        <para>
651            Das obenstehende nimmt an das statische Dateien im Verzeichnis
652            <filename>./public/cached</filename> gecacht werden. Wir betrachten die Einstellung
653            dieses Ortes unter "public_dir" weiter unten.
654        </para>
655
656        <para>
657            Durch die Natur des Cachens von statischen Dateien bietet die Backend Klasse zwei
658            zusätzliche Methoden an: <methodname>remove()</methodname> und
659            <methodname>removeRecursively()</methodname>. Beide akzeptieren eine Anfrage
660            <acronym>URI</acronym> welche, wenn Sie mit dem "public_dir" in dem statische Dateien
661            gecacht werden verknüpft wird, und eine vor-gespeicherte Erweiterung angehängt wird,
662            entweder den Namen einer statischen Datei anbietet welche zu löschen ist, oder einen
663            Verzeichnispfad welcher rekursiv zu löschen ist. Durch die Einschränkung von
664            <classname>Zend_Cache_Backend_Interface</classname> akzeptieren alle anderen Methoden
665            wie <methodname>save()</methodname> eine ID welche durch Anwendung von
666            <methodname>bin2hex()</methodname> auf eine Anfrage <acronym>URI</acronym> berechnet
667            wird.
668        </para>
669
670        <para>
671            Durch das Level an dem das statische Cachen arbeitet ist das statische Dateicaching
672            auf eine einfachere Verwendung mit
673            <classname>Zend_Controller_Action_Helper_Cache</classname> ausgelegt. Dieser Helfer
674            assistiert beim Einstellen welche Aktionen eines Controllers zu cachen sind, mit welchen
675            Tags, und mit welcher Erweiterung. Er bietet auch Methoden für das Entleeren des Caches
676            durch die Anfrage <acronym>URI</acronym> oder Tag. Statischen Dateicaching wird auch
677            durch <classname>Zend_Cache_Manager</classname> unterstützt welcher vorkonfigurierte
678            Konfigurationstemplates für den statischen Cache enthält (als
679            <constant>Zend_Cache_Manager::PAGECACHE</constant> oder "page"). Die Standardwerte
680            können hierbei wie benötigt konfiguriert werden um einen "public_dir" Ort für das Cachen
681            zu setzen, usw.
682        </para>
683
684        <note>
685            <para>
686                Es sollte beachtet werden dass der statische Cache aktuell einen zweiten Cache
687                verwendet um Tags zu speichern (offensichtlich können wir Sie nicht anderswo
688                speichern da bei einem statischen Cache <acronym>PHP</acronym> nicht aufgerufen wird
689                wenn er richtig arbeitet). Das ist nur ein standardmäßiger Core Cache, und er sollte
690                ein persistentes Backend wie File oder TwoLevels verwenden (um die Vorteile des
691                Memory Speichers zu verwenden ohne die permanente Persistenz zu opfern). Das
692                Backend enthält die Option "tag_cache" um es zu konfigurieren (das ist
693                obligatorisch), oder die Methode <methodname>setInnerCache()</methodname>.
694            </para>
695        </note>
696
697        <table id="zend.cache.backends.static.table">
698            <title>Statische Backend Optionen</title>
699
700            <tgroup cols="4">
701                <thead>
702                    <row>
703                        <entry>Option</entry>
704                        <entry>Datentyp</entry>
705                        <entry>Standardwert</entry>
706                        <entry>Beschreibung</entry>
707                    </row>
708                </thead>
709
710                <tbody>
711                    <row>
712                        <entry><emphasis>public_dir</emphasis></entry>
713                        <entry><type>String</type></entry>
714                        <entry><constant>NULL</constant></entry>
715
716                        <entry>
717                            Verzeichnis in dem statische Dateien zu speichern sind. Es muß im
718                            öffentlichen Verzeichnis existieren.
719                        </entry>
720                    </row>
721
722                    <row>
723                        <entry><emphasis>file_locking</emphasis></entry>
724                        <entry><type>Boolean</type></entry>
725                        <entry><constant>TRUE</constant></entry>
726
727                        <entry>
728                            file_locking aktivieren oder deaktivieren: Kann die Korruption des
729                            Caches unter schlechten Umständen verhindern hilft aber nicht bei
730                            Multithreaded Webservern oder bei <acronym>NFS</acronym> Dateisystemen.
731                        </entry>
732                    </row>
733
734                    <row>
735                        <entry><emphasis>read_control</emphasis></entry>
736                        <entry><type>Boolean</type></entry>
737                        <entry><constant>TRUE</constant></entry>
738
739                        <entry>
740                            Lesekontrolle aktivieren oder deaktivieren: Aktiviert wird ein
741                            Kontrollschlüssel in die Cachedatei eingebettet und dieser Schlüssel
742                            wird mit dem verglichen der nach dem Lesen berechnet wird.
743                        </entry>
744                    </row>
745
746                    <row>
747                        <entry><emphasis>read_control_type</emphasis></entry>
748                        <entry><type>String</type></entry>
749                        <entry>'crc32'</entry>
750
751                        <entry>
752                            Typ der Lesekontrolle (nur wenn die Lesekontrolle aktiviert ist).
753                            Mögliche Werte sind: 'md5' (am besten aber langsam), 'crc32' (etwas
754                            weniger sicher aber schneller, bessere Wahl), 'adler32' (neue Wahl,
755                            schneller als cec32), 'strlen' für einen reinen Längentest (am
756                            schnellsten).
757                        </entry>
758                    </row>
759
760                    <row>
761                        <entry><emphasis>cache_file_umask</emphasis></entry>
762                        <entry><type>Integer</type></entry>
763                        <entry>0700</entry>
764                        <entry>Umask für gecachte Dateien.</entry>
765                    </row>
766
767                    <row>
768                        <entry><emphasis>cache_directory_umask</emphasis></entry>
769                        <entry><type>Integer</type></entry>
770                        <entry>0700</entry>
771                        <entry>Umask für Verzeichnisse welche im public_dir erstellt wurden.</entry>
772                    </row>
773
774                    <row>
775                        <entry><emphasis>file_extension</emphasis></entry>
776                        <entry><type>String</type></entry>
777                        <entry>'<filename>.html</filename>'</entry>
778
779                        <entry>
780                            Standardmäßige Dateierweiterung für erstellt statische Dateien. Diese
781                            kann im Fluge konfiguriert werden, siehe
782                            <methodname>Zend_Cache_Backend_Static::save()</methodname> obwohl
783                            generell empfohlen wird sich auf
784                            <classname>Zend_Controller_Action_Helper_Cache</classname> zu verlassen
785                            wenn man das macht, weil es ein einfacherer Weg ist als mit Arrays oder
786                            der manuellen Serialisierung herumzuspielen.
787                        </entry>
788                    </row>
789
790                    <row>
791                        <entry><emphasis>index_filename</emphasis></entry>
792                        <entry><type>String</type></entry>
793                        <entry>'index'</entry>
794
795                        <entry>
796                            Wenn eine Anfrage <acronym>URI</acronym> nicht genügend Informationen
797                            enthält um eine statische Datei zu erstellen (normalerweise bedeutet
798                            dies einen Indexaufruf, z.B. die <acronym>URI</acronym> von '/'), dann
799                            wir stattdessen index_filename verwendet. Deshalb würden '' oder '/' auf
800                            '<filename>index.html</filename>' verweisen (in der Annahme das die
801                            standardmäßige file_extension '<filename>.html</filename>' ist).
802                        </entry>
803                    </row>
804
805                    <row>
806                        <entry><emphasis>tag_cache</emphasis></entry>
807                        <entry><type>Object</type></entry>
808                        <entry><constant>NULL</constant></entry>
809
810                        <entry>
811                            Wird verwendet um einen 'inner' Cache zu Setzen der verwendet wird um
812                            Tags zu speichern und Dateierweiterungen mit statischen Dateien zu
813                            verknüpfen. Das <emphasis>muss</emphasis> gesetzt sein, oder der
814                            statische Cache kann nicht verfolgt und gemanagt werden.
815                        </entry>
816                    </row>
817
818                    <row>
819                        <entry><emphasis>disable_caching</emphasis></entry>
820                        <entry><type>Boolean</type></entry>
821                        <entry><constant>FALSE</constant></entry>
822
823                        <entry>
824                            Wenn es auf <constant>TRUE</constant> gesetzt wird, werden statische
825                            Dateien nicht gecacht. Das zwingt alle Anfragen dynamisch zu sein,
826                            selbst wenn diese markiert und in den Controller gecacht sind. Dies ist
827                            für das Debuggen nützlich.
828                        </entry>
829                    </row>
830                </tbody>
831            </tgroup>
832        </table>
833    </sect2>
834</sect1>