/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
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 22140 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.cache.backends">
- <title>Zend_Cache Backends</title>
- <para>
- Es gibt zwei Arten von Backends: Standard und erweiterte. Natürlich bieten erweiterte
- Backends mehr Features.
- </para>
- <sect2 id="zend.cache.backends.file">
- <title>Zend_Cache_Backend_File</title>
- <para>
- Dieses (erweiterte) Backend speichert Cache Datensätze in Dateien (in einem gewählten
- Verzeichnis).
- </para>
- <para>
- Mögliche Optionen sind :
- </para>
- <table id="zend.cache.backends.file.table">
- <title>File Backend Optionen</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>Option</entry>
- <entry>Daten Typ</entry>
- <entry>Standardwert</entry>
- <entry>Beschreibung</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry><emphasis>cache_dir</emphasis></entry>
- <entry><type>String</type></entry>
- <entry>'<filename>/tmp/</filename>'</entry>
- <entry>
- Verzeichnis, in dem die Cache Dateien gespeichert werden
- </entry>
- </row>
- <row>
- <entry><emphasis>file_locking</emphasis></entry>
- <entry><type>Boolean</type></entry>
- <entry><constant>TRUE</constant></entry>
- <entry>
- Ein- oder Ausschalten von file_locking: kann die Beschädigung des
- Caches unter schlechten Bedingungen verhindern, aber es hilft nicht bei
- Multithreaded Webservern oder bei <acronym>NFS</acronym>
- Filesystemen...
- </entry>
- </row>
- <row>
- <entry><emphasis>read_control</emphasis></entry>
- <entry><type>Boolean</type></entry>
- <entry><constant>TRUE</constant></entry>
- <entry>
- Ein- oder Ausschalten von read_control: eingeschaltet wird ein
- Kontrollschlüssel im Cache File inkludiert und dieser Schlüssel wird mit
- dem Schlüssel verglichen, der nach dem Lesen berechnet wird.
- </entry>
- </row>
- <row>
- <entry><emphasis>read_control_type</emphasis></entry>
- <entry><type>String</type></entry>
- <entry>'crc32'</entry>
- <entry>
- Typ der Schreibkontrolle (nur wenn read_control eingeschaltet ist).
- Mögliche Werte sind : 'md5' (bestes, aber am Langsamsten), 'crc32'
- (etwas weniger sicher, aber schneller, beste Wahl), 'adler32' (neue
- Wahl, schneller als crc32), 'strlen' um nur die Länge zu testen
- (schnellstes).
- </entry>
- </row>
- <row>
- <entry><emphasis>hashed_directory_level</emphasis></entry>
- <entry><type>Integer</type></entry>
- <entry>0</entry>
- <entry>
- Level der gehashten Verzeichnis Struktur: 0 heißt "keine gehashte
- Verzeichnis Strutur, 1 heißt "ein Level von Verzeichnissen", 2 heißt
- "zwei Levels"... Diese Option kann den Cache nur dann schneller machen,
- wenn viele Tausende Cache Dateien verwendet werden. Nur spezielle
- Messungen können helfen, den perfekten Wert zu finden. Möglicherweise
- ist 1 oder 2 ein guter Anfang.
- </entry>
- </row>
- <row>
- <entry><emphasis>hashed_directory_umask</emphasis></entry>
- <entry><type>Integer</type></entry>
- <entry>0700</entry>
- <entry>Umask für die gehashte Verzeichnis Struktur</entry>
- </row>
- <row>
- <entry><emphasis>file_name_prefix</emphasis></entry>
- <entry><type>String</type></entry>
- <entry>'zend_cache'</entry>
- <entry>
- Präfix für Cache Dateien; man muss mit dieser Option sehr vorsichtig
- umgehen, weil ein zu generischer Wert in einem System Cache
- Verzeichnis (wie <filename>/tmp</filename>) kann beim Löschen des
- Caches zu großen Problemen führen.
- </entry>
- </row>
- <row>
- <entry><emphasis>cache_file_umask</emphasis></entry>
- <entry><type>Integer</type></entry>
- <entry>0700</entry>
- <entry>umask nach Cache Dateien</entry>
- </row>
- <row>
- <entry><emphasis>metatadatas_array_max_size</emphasis></entry>
- <entry><type>Integer</type></entry>
- <entry>100</entry>
- <entry>
- Interne maximale Größe für das Metadaten Array (dieser Wert sollte
- nicht geändert werden außer man weiß was man macht)
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect2>
- <sect2 id="zend.cache.backends.sqlite">
- <title>Zend_Cache_Backend_Sqlite</title>
- <para>
- Dieses (erweiterte) Backend speichert die Cache Datensätze in einer SQLite Datenbank.
- </para>
- <para>
- Mögliche Optionen sind :
- </para>
- <table id="zend.cache.backends.sqlite.table">
- <title>Sqlite Backend Optionen</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>Option</entry>
- <entry>Daten Typ</entry>
- <entry>Standardwert</entry>
- <entry>Beschreibung</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry><emphasis>cache_db_complete_path (mandatory)</emphasis></entry>
- <entry><type>String</type></entry>
- <entry><constant>NULL</constant></entry>
- <entry>Der komplette Pfad (inklusive Dateiname) der SQLite Datenbank</entry>
- </row>
- <row>
- <entry><emphasis>automatic_vacuum_factor</emphasis></entry>
- <entry><type>Integer</type></entry>
- <entry>10</entry>
- <entry>
- Deaktiviert oder stellt den automatischen Vakuumprozess ein.
- Der automatische Vakuumprozess defragmentiert die Datenbankdatei (und
- verkleinert sie) wenn <methodname>clean()</methodname> oder
- <methodname>delete()</methodname> aufgerufen wird: 0 bedeutet kein
- automatisches Vakuum; 1 bedeutet systematisches Vakuum (wenn die
- <methodname>delete()</methodname> or <methodname>clean()</methodname>
- Methoden aufgerufen werden; x (integer) > 1 => automatisches Vakuum
- zufällig einmal pro x <methodname>clean()</methodname> oder
- <methodname>delete()</methodname> Aufrufe.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect2>
- <sect2 id="zend.cache.backends.memcached">
- <title>Zend_Cache_Backend_Memcached</title>
- <para>
- Dieses (erweiterte) Backend speichert Cache Datensätze in einem Memcached Server. <ulink
- url="http://www.danga.com/memcached/">memcached</ulink> ist ein hoch-performantes,
- verteiltes Speicher Objekt Caching System. Um dieses Backend zu benutzen, wird ein
- Memcached Dämon benötigt und <ulink url="http://pecl.php.net/package/memcache">die
- Memcached <acronym>PECL</acronym> Erweiterung</ulink>.
- </para>
- <para>
- Vorsicht: mit diesem Backend werden zur Zeit "Marker" nicht unterstützt genauso wie das
- "doNotTestCacheValidity=true" Argument.
- </para>
- <para>
- Mögliche Optionen sind :
- </para>
- <table id="zend.cache.backends.memcached.table">
- <title>Memcached Backend Optionen</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>Option</entry>
- <entry>Daten Typ</entry>
- <entry>Standardwert</entry>
- <entry>Beschreibung</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry><emphasis>servers</emphasis></entry>
- <entry><type>Array</type></entry>
- <entry>
- <command>array(array('host' => 'localhost','port' => 11211,
- 'persistent' => true, 'weight' => 1, 'timeout' => 5,
- 'retry_interval' => 15, 'status' => true,
- 'failure_callback' => '' ))</command>
- </entry>
- <entry>
- Ein Array von Memcached Servern; jeder Memcached Server wird durch ein
- assoziatives Array beschrieben : 'host' => (string) : Der Name des
- Memcached Servers, 'port' => (int) : Der Port des Memcached Servers,
- 'persistent' => (bool) : Persistente Verbindungen für diesen Memcached
- Server verwenden oder nicht 'weight' => (int) : Das Gewicht des
- Memcached Servers, 'timeout' => (int) : Das Timeout des Memcached
- Servers, 'retry_interval' => (int) : Das Wiederholungsintervall des
- Memcached Servers, 'status' => (bool) : Der Status des Memcached
- Servers, 'failure_callback' => (callback) : Der failure_callback des
- Memcached Servers
- </entry>
- </row>
- <row>
- <entry><emphasis>compression</emphasis></entry>
- <entry><type>Boolean</type></entry>
- <entry><constant>FALSE</constant></entry>
- <entry>
- <constant>TRUE</constant> wenn on-the-fly Kompression verwendet werden
- soll
- </entry>
- </row>
- <row>
- <entry><emphasis>compatibility</emphasis></entry>
- <entry><type>Boolean</type></entry>
- <entry><constant>FALSE</constant></entry>
- <entry>
- <constant>TRUE</constant> wenn man den Compatibility Modus mit alten
- Memcache Servern oder Erweiterungen verwenden will
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect2>
- <sect2 id="zend.cache.backends.apc">
- <title>Zend_Cache_Backend_Apc</title>
- <para>
- Dieses (erweiterte) Backend speichert Cache Datensätze im Shared Memory durch die
- <ulink url="http://pecl.php.net/package/APC">APC</ulink> (Alternativer
- <acronym>PHP</acronym> Cache) Erweiterung (welche natürlich für die Verwendung dieses
- Backends benötigt wird).
- </para>
- <para>
- Vorsicht: mit diesem Backend werden "Marker" zur Zeit nicht unterstützt genauso wie das
- "doNotTestCacheValidity=true" Argument.
- </para>
- <para>
- Es gibt keine Optionen für dieses Backend.
- </para>
- </sect2>
- <sect2 id="zend.cache.backends.xcache">
- <title>Zend_Cache_Backend_Xcache</title>
- <para>
- Dieses Backend speichert Cache Einträge im Shared Memory durch die
- <ulink url="http://xcache.lighttpd.net/">XCache</ulink> Erweiterung (welche natürlich
- benötigt wird, damit dieses Backend verwendet werden kann).
- </para>
- <para>
- Achtung: Bei diesem Backend werden "tags" aktuell nicht unterstützt sowie das
- "doNotTestCacheValidity=true" Argument.
- </para>
- <para>
- Mögliche Optionen sind:
- </para>
- <table id="zend.cache.backends.xcache.table">
- <title>Xcache backend options</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>Option</entry>
- <entry>Daten Typ</entry>
- <entry>Standardwert</entry>
- <entry>Beschreibung</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry><emphasis>user</emphasis></entry>
- <entry><type>String</type></entry>
- <entry><constant>NULL</constant></entry>
- <entry>
- <filename>xcache.admin.user</filename>, notwendig für die
- <methodname>clean()</methodname> Methode
- </entry>
- </row>
- <row>
- <entry><emphasis>password</emphasis></entry>
- <entry><type>String</type></entry>
- <entry><constant>NULL</constant></entry>
- <entry>
- <filename>xcache.admin.pass</filename> (in offener Form, nicht
- <acronym>MD5</acronym>), notwendig für die
- <methodname>clean()</methodname> Methode
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect2>
- <sect2 id="zend.cache.backends.platform">
- <title>Zend_Cache_Backend_ZendPlatform</title>
- <para>
- Dieses Backend verwendet die Content Caching <acronym>API</acronym> des
- <ulink url="http://www.zend.com/en/products/platform">Zend Platform</ulink> Produktes.
- Natürlich muss man die Zend Platform installiert haben, um dieses Backend verwenden zu
- können.
- </para>
- <para>
- Dieses Backend unterstützt Tags, aber nicht den
- <constant>CLEANING_MODE_NOT_MATCHING_TAG</constant> Löschmodus.
- </para>
- <para>
- Bei Definition dieses Backends muß ein Trennzeichen -- '-', '.', ' ', oder '_'
- -- zwischen den Wörtern 'Zend' und 'Platform' definiert sein wenn die
- <methodname>Zend_Cache::factory()</methodname> Methode verwendet wird:
- </para>
- <programlisting language="php"><![CDATA[
- $cache = Zend_Cache::factory('Core', 'Zend Platform');
- ]]></programlisting>
- <para>
- Es gibt keine Optionen für dieses Backend.
- </para>
- </sect2>
- <sect2 id="zend.cache.backends.twolevels">
- <title>Zend_Cache_Backend_TwoLevels</title>
- <para>
- Dieses (erweiterte) Backend ist ein Hybrides. Es speichert Cache Einträge in zwei
- anderen Backends: Ein schnelles (aber limitiertes) wie Apc, Memcache... und ein
- "langsames" wie File, Sqlite...
- </para>
- <para>
- Dieses Backend verwendet den Priority Parameter (der auf Frontend Level angegeben wird
- wenn ein Eintrag gespeichert wird) und den verbleibenden Platz im schnellen Backend um
- die Verwendung dieser zwei Backends zu optimieren.
- </para>
- <para>
- Dieses Backend sollte mit Verwendung eines Word Separators -- '-', '.', ' ', oder '_' --
- zwischen den Wörtern 'Two' und 'Levels' spezifiziert werden wenn die
- <methodname>Zend_Cache::factory()</methodname> Methode verwendet wird:
- </para>
- <programlisting language="php"><![CDATA[
- $cache = Zend_Cache::factory('Core', 'Two Levels');
- ]]></programlisting>
- <para>
- Vorhandene Optionen sind:
- </para>
- <table id="zend.cache.backends.twolevels.table">
- <title>TwoLevels Backend Optionen</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>Option</entry>
- <entry>Datentyp</entry>
- <entry>Standardwert</entry>
- <entry>Beschreibung</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry><emphasis>slow_backend</emphasis></entry>
- <entry><type>String</type></entry>
- <entry>File</entry>
- <entry>Der "langsame" Backendname</entry>
- </row>
- <row>
- <entry><emphasis>fast_backend</emphasis></entry>
- <entry><type>String</type></entry>
- <entry>Apc</entry>
- <entry>Der "schnelle" Backendname</entry>
- </row>
- <row>
- <entry><emphasis>slow_backend_options</emphasis></entry>
- <entry><type>Array</type></entry>
- <entry><methodname>array()</methodname></entry>
- <entry>Die "langsamen" Backendoptionen</entry>
- </row>
- <row>
- <entry><emphasis>fast_backend_options</emphasis></entry>
- <entry><type>Array</type></entry>
- <entry><methodname>array()</methodname></entry>
- <entry>Die "schnellen" Backendoptionen</entry>
- </row>
- <row>
- <entry><emphasis>slow_backend_custom_naming</emphasis></entry>
- <entry><type>Boolean</type></entry>
- <entry><constant>FALSE</constant></entry>
- <entry>
- Wenn <constant>TRUE</constant>, wird das slow_backend Argument als
- kompletter Klassenname verwendet; wenn <constant>FALSE</constant>,
- wird das frontend Argument als Ende des
- "<classname>Zend_Cache_Backend_</classname>[...]" Klassennamens
- verwendet
- </entry>
- </row>
- <row>
- <entry><emphasis>fast_backend_custom_naming</emphasis></entry>
- <entry><type>Boolean</type></entry>
- <entry><constant>FALSE</constant></entry>
- <entry>
- Wenn <constant>TRUE</constant>, wird das fast_backend Argument als
- kompletter Klassenname verwendet; wenn <constant>FALSE</constant>,
- wird das frontend Argument als Ende des
- "<classname>Zend_Cache_Backend_</classname>[...]" Klassennamens
- verwendet
- </entry>
- </row>
- <row>
- <entry><emphasis>slow_backend_autoload</emphasis></entry>
- <entry><type>Boolean</type></entry>
- <entry><constant>FALSE</constant></entry>
- <entry>
- Wenn <constant>TRUE</constant>, wird kein require_once für das
- langsame Backend verwendet (nur für eigene Backends nützlich)
- </entry>
- </row>
- <row>
- <entry><emphasis>fast_backend_autoload</emphasis></entry>
- <entry><type>Boolean</type></entry>
- <entry><constant>FALSE</constant></entry>
- <entry>
- Wenn <constant>TRUE</constant>, wird kein require_once für das
- schnelle Backend verwendet (nur für eigene Backends nützlich)
- </entry>
- </row>
- <row>
- <entry><emphasis>auto_refresh_fast_cache</emphasis></entry>
- <entry><type>Boolean</type></entry>
- <entry><constant>TRUE</constant></entry>
- <entry>
- Wenn <constant>TRUE</constant>, wird der schnelle Cache automatisch
- refresht wenn ein Cache Eintrag getroffen wird
- </entry>
- </row>
- <row>
- <entry><emphasis>stats_update_factor</emphasis></entry>
- <entry><type>Integer</type></entry>
- <entry>10</entry>
- <entry>
- Ausschalten / Feintunen der Berechnung des Füll-Prozentsatzes des
- schnellen Backends (wenn ein Eintrag in den Cache gespeichert wird,
- die Berechnung des Füll-Prozentsatzes des schnellen Backends zufällig
- 1 mal bei x Cache Schreibvorgängen)
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect2>
- <sect2 id="zend.cache.backends.zendserver">
- <title>Zend_Cache_Backend_ZendServer_Disk und Zend_Cache_Backend_ZendServer_ShMem</title>
- <para>
- Diese Backends speichern Cacheeinträge indem Sie die Caching Funktionalitäten von <ulink
- url="http://www.zend.com/en/products/server/downloads-all?zfs=zf_download">Zend
- Server</ulink> verwenden.
- </para>
- <para>
- Achtung: mit diesen Backends werden für den Moment "Tags" nicht unterstützt, wegen dem
- "doNotTestCacheValidity=true" Argument.
- </para>
- <para>
- Diese Backends arbeiten nur in einer Zend Server Umgebung für Seiten die über
- <acronym>HTTP</acronym> oder <acronym>HTTPS</acronym> angefragt wurden und nicht für
- Kommandozeilen Ausführung.
- </para>
- <para>
- Dieses Backend muß durch Verwendung des <emphasis>customBackendNaming</emphasis>
- Parameter mit <constant>TRUE</constant> spezifiziert werden wenn die Methode
- <methodname>Zend_Cache::factory()</methodname> verwendet wird:
- </para>
- <programlisting language="php"><![CDATA[
- $cache = Zend_Cache::factory('Core', 'Zend_Cache_Backend_ZendServer_Disk',
- $frontendOptions, $backendOptions, false, true);
- ]]></programlisting>
- <para>
- Es gibt keine Optionen für diese Backends.
- </para>
- </sect2>
- <sect2 id="zend.cache.backends.static">
- <title>Zend_Cache_Backend_Static</title>
- <para>
- Dieses Backend arbeitet in Verbindung mit
- <classname>Zend_Cache_Frontend_Capture</classname> (diese zwei müssen zusammen verwendet
- werden) um die Ausgabe von Anfragen als statische Dateien zu speichern. Dies bedeutet
- das die statischen Dateien bei weiteren Anfragen direkt serviert werden ohne dass
- <acronym>PHP</acronym> oder sogar Zend Framework involviert sind.
- </para>
- <note>
- <para>
- <classname>Zend_Cache_Frontend_Capture</classname> arbeitet indem es eine Callback
- Funktion registriert welche aufgerufen wird wenn der Ausgabebuffer den es verwendet
- gelöscht wird. Damit das richtig funktioniert muss er der letzte Ausgabebuffer in
- der Anfrage sein. Um dies zu garantieren <emphasis>muss</emphasis> der Ausgabebuffer
- welcher vom Dispacher verwendet wird ausgeschaltet sein indem
- <classname>Zend_Controller_Front</classname>'s Methode
- <methodname>setParam()</methodname> verwendet wird, zum Beispiel
- <command>$front->setParam('disableOutputBuffering', true);</command> oder indem
- "resources.frontcontroller.params.disableOutputBuffering = true" in der Bootstrap
- Konfigurationsdatei (wir nehmen <acronym>INI</acronym> an) wenn
- <classname>Zend_Application</classname> verwendet wird.
- </para>
- </note>
- <para>
- Der Vorteil dieses Caches besteht darin das eine starke Verbesserung des Durchsatzes
- stattfindet weil statische Dateien zurückgegeben werden und keine weitere dynamische
- Bearbeitung stattfindet. Natürlich gibt es auch einige Nachteile. Der einzige Weg um
- dynamische Anfragen wieder zu haben besteht darin die gecachten Dateien von anderswo
- in der Anwendung zu löschen (oder über einen Cronjob wenn das zeitlich abgestimmt werden
- soll). Es ist auch auf Single-Server Anwendungen begrenzt begrenzt bei denen nur ein
- Dateisystem verwendet wird. Trotzdem kann es eine große Bedeutung haben wenn man mehr
- Geschwindigkeit haben will ohne auf Kosten eines Proxies auf einzelnen Maschinen zu
- setzen.
- </para>
- <para>
- Bevor die Optionen beschrieben werden sollte man beachten das dies einige Änderungen der
- Standardwerte in der <filename>.htaccess</filename> Datei benötigt damit Anfrage auf die
- staischen Dateien zeigen wenn diese existieren. Hier ist ein Beispiel einer einfachen
- Anwendung die etwas Inhalt cacht, inklusive zwei spezifischer Feeds welche zusätzliche
- Behandlung benötigen um einen korrekten Content-Type Header zu schicken:
- </para>
- <programlisting language="text"><![CDATA[
- AddType application/rss+xml .xml
- AddType application/atom+xml .xml
- RewriteEngine On
- RewriteCond %{REQUEST_URI} feed/rss$
- RewriteCond %{DOCUMENT_ROOT}/cached/%{REQUEST_URI}.xml -f
- RewriteRule .* cached/%{REQUEST_URI}.xml [L,T=application/rss+xml]
- RewriteCond %{REQUEST_URI} feed/atom$
- RewriteCond %{DOCUMENT_ROOT}/cached/%{REQUEST_URI}.xml -f
- RewriteRule .* cached/%{REQUEST_URI}.xml [L,T=application/atom+xml]
- RewriteCond %{DOCUMENT_ROOT}/cached/index.html -f
- RewriteRule ^/*$ cached/index.html [L]
- RewriteCond %{DOCUMENT_ROOT}/cached/%{REQUEST_URI}.(html|xml|json|opml|svg) -f
- RewriteRule .* cached/%{REQUEST_URI}.%1 [L]
- RewriteCond %{REQUEST_FILENAME} -s [OR]
- RewriteCond %{REQUEST_FILENAME} -l [OR]
- RewriteCond %{REQUEST_FILENAME} -d
- RewriteRule ^.*$ - [NC,L]
- RewriteRule ^.*$ index.php [NC,L]
- ]]></programlisting>
- <para>
- Das obenstehende nimmt an das statische Dateien im Verzeichnis
- <filename>./public/cached</filename> gecacht werden. Wir betrachten die Einstellung
- dieses Ortes unter "public_dir" weiter unten.
- </para>
- <para>
- Durch die Natur des Cachens von statischen Dateien bietet die Backend Klasse zwei
- zusätzliche Methoden an: <methodname>remove()</methodname> und
- <methodname>removeRecursively()</methodname>. Beide akzeptieren eine Anfrage
- <acronym>URI</acronym> welche, wenn Sie mit dem "public_dir" in dem statische Dateien
- gecacht werden verknüpft wird, und eine vor-gespeicherte Erweiterung angehängt wird,
- entweder den Namen einer statischen Datei anbietet welche zu löschen ist, oder einen
- Verzeichnispfad welcher rekursiv zu löschen ist. Durch die Einschränkung von
- <classname>Zend_Cache_Backend_Interface</classname> akzeptieren alle anderen Methoden
- wie <methodname>save()</methodname> eine ID welche durch Anwendung von
- <methodname>bin2hex()</methodname> auf eine Anfrage <acronym>URI</acronym> berechnet
- wird.
- </para>
- <para>
- Durch das Level an dem das statische Cachen arbeitet ist das statische Dateicaching
- auf eine einfachere Verwendung mit
- <classname>Zend_Controller_Action_Helper_Cache</classname> ausgelegt. Dieser Helfer
- assistiert beim Einstellen welche Aktionen eines Controllers zu cachen sind, mit welchen
- Tags, und mit welcher Erweiterung. Er bietet auch Methoden für das Entleeren des Caches
- durch die Anfrage <acronym>URI</acronym> oder Tag. Statischen Dateicaching wird auch
- durch <classname>Zend_Cache_Manager</classname> unterstützt welcher vorkonfigurierte
- Konfigurationstemplates für den statischen Cache enthält (als
- <constant>Zend_Cache_Manager::PAGECACHE</constant> oder "page"). Die Standardwerte
- können hierbei wie benötigt konfiguriert werden um einen "public_dir" Ort für das Cachen
- zu setzen, usw.
- </para>
- <note>
- <para>
- Es sollte beachtet werden dass der statische Cache aktuell einen zweiten Cache
- verwendet um Tags zu speichern (offensichtlich können wir Sie nicht anderswo
- speichern da bei einem statischen Cache <acronym>PHP</acronym> nicht aufgerufen wird
- wenn er richtig arbeitet). Das ist nur ein standardmäßiger Core Cache, und er sollte
- ein persistentes Backend wie File oder TwoLevels verwenden (um die Vorteile des
- Memory Speichers zu verwenden ohne die permanente Persistenz zu opfern). Das
- Backend enthält die Option "tag_cache" um es zu konfigurieren (das ist
- obligatorisch), oder die Methode <methodname>setInnerCache()</methodname>.
- </para>
- </note>
- <table id="zend.cache.backends.static.table">
- <title>Statische Backend Optionen</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>Option</entry>
- <entry>Datentyp</entry>
- <entry>Standardwert</entry>
- <entry>Beschreibung</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry><emphasis>public_dir</emphasis></entry>
- <entry><type>String</type></entry>
- <entry><constant>NULL</constant></entry>
- <entry>
- Verzeichnis in dem statische Dateien zu speichern sind. Es muß im
- öffentlichen Verzeichnis existieren.
- </entry>
- </row>
- <row>
- <entry><emphasis>file_locking</emphasis></entry>
- <entry><type>Boolean</type></entry>
- <entry><constant>TRUE</constant></entry>
- <entry>
- file_locking aktivieren oder deaktivieren: Kann die Korruption des
- Caches unter schlechten Umständen verhindern hilft aber nicht bei
- Multithreaded Webservern oder bei <acronym>NFS</acronym> Dateisystemen.
- </entry>
- </row>
- <row>
- <entry><emphasis>read_control</emphasis></entry>
- <entry><type>Boolean</type></entry>
- <entry><constant>TRUE</constant></entry>
- <entry>
- Lesekontrolle aktivieren oder deaktivieren: Aktiviert wird ein
- Kontrollschlüssel in die Cachedatei eingebettet und dieser Schlüssel
- wird mit dem verglichen der nach dem Lesen berechnet wird.
- </entry>
- </row>
- <row>
- <entry><emphasis>read_control_type</emphasis></entry>
- <entry><type>String</type></entry>
- <entry>'crc32'</entry>
- <entry>
- Typ der Lesekontrolle (nur wenn die Lesekontrolle aktiviert ist).
- Mögliche Werte sind: 'md5' (am besten aber langsam), 'crc32' (etwas
- weniger sicher aber schneller, bessere Wahl), 'adler32' (neue Wahl,
- schneller als cec32), 'strlen' für einen reinen Längentest (am
- schnellsten).
- </entry>
- </row>
- <row>
- <entry><emphasis>cache_file_umask</emphasis></entry>
- <entry><type>Integer</type></entry>
- <entry>0700</entry>
- <entry>Umask für gecachte Dateien.</entry>
- </row>
- <row>
- <entry><emphasis>cache_directory_umask</emphasis></entry>
- <entry><type>Integer</type></entry>
- <entry>0700</entry>
- <entry>Umask für Verzeichnisse welche im public_dir erstellt wurden.</entry>
- </row>
- <row>
- <entry><emphasis>file_extension</emphasis></entry>
- <entry><type>String</type></entry>
- <entry>'<filename>.html</filename>'</entry>
- <entry>
- Standardmäßige Dateierweiterung für erstellt statische Dateien. Diese
- kann im Fluge konfiguriert werden, siehe
- <methodname>Zend_Cache_Backend_Static::save()</methodname> obwohl
- generell empfohlen wird sich auf
- <classname>Zend_Controller_Action_Helper_Cache</classname> zu verlassen
- wenn man das macht, weil es ein einfacherer Weg ist als mit Arrays oder
- der manuellen Serialisierung herumzuspielen.
- </entry>
- </row>
- <row>
- <entry><emphasis>index_filename</emphasis></entry>
- <entry><type>String</type></entry>
- <entry>'index'</entry>
- <entry>
- Wenn eine Anfrage <acronym>URI</acronym> nicht genügend Informationen
- enthält um eine statische Datei zu erstellen (normalerweise bedeutet
- dies einen Indexaufruf, z.B. die <acronym>URI</acronym> von '/'), dann
- wir stattdessen index_filename verwendet. Deshalb würden '' oder '/' auf
- '<filename>index.html</filename>' verweisen (in der Annahme das die
- standardmäßige file_extension '<filename>.html</filename>' ist).
- </entry>
- </row>
- <row>
- <entry><emphasis>tag_cache</emphasis></entry>
- <entry><type>Object</type></entry>
- <entry><constant>NULL</constant></entry>
- <entry>
- Wird verwendet um einen 'inner' Cache zu Setzen der verwendet wird um
- Tags zu speichern und Dateierweiterungen mit statischen Dateien zu
- verknüpfen. Das <emphasis>muss</emphasis> gesetzt sein, oder der
- statische Cache kann nicht verfolgt und gemanagt werden.
- </entry>
- </row>
- <row>
- <entry><emphasis>disable_caching</emphasis></entry>
- <entry><type>Boolean</type></entry>
- <entry><constant>FALSE</constant></entry>
- <entry>
- Wenn es auf <constant>TRUE</constant> gesetzt wird, werden statische
- Dateien nicht gecacht. Das zwingt alle Anfragen dynamisch zu sein,
- selbst wenn diese markiert und in den Controller gecacht sind. Dies ist
- für das Debuggen nützlich.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect2>
- </sect1>