| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 21109 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.cache.cache.manager">
- <title>Der Cache Manager</title>
- <para>
- Es ist die Natur von Anwendungen eine Vielzahl an Caches jedes Types zu benötigen oft
- abhängig vom Controller, der Bibliothek oder dem Domainmodell auf das zugegriffen wird.
- Um die einfache Definition von <classname>Zend_Cache</classname> Optionen zu erlauben
- (wie von der Bootstrap), damit auf ein Cacheobjekt zugegriffen werden kann und nur ein
- minimales Setup im Sourcecode der Anwendung benötigt wird, wurde die Klasse
- <classname>Zend_Cache_Manager</classname> geschrieben. Diese Klasse wird von
- <classname>Zend_Application_Resource_Cachemanager</classname> verwendet um sicherzustellen
- das die Konfiguration der Bootstrap vorhanden ist, und
- <classname>Zend_Controller_Action_Helper_Cache</classname> um einen einfachen Zugriff und
- eine einfache Instanzierung von Controllern und anderen Helfern zu erlauben.
- </para>
- <para>
- Die grundsätzliche Operation dieser Komponente ist wie folgt. Der Cache Manager erlaubt es
- Benutzern "Option Templates" zu konfigurieren, grundsätzlich Optionen für ein Set von
- benannten Caches. Diese können gesetzt werden indem die Methode
- <methodname>Zend_Cache_Manager::setCacheTemplate()</methodname> verwendet wird. Diese
- Templates führen einen Cache nicht aus solange der Benutzer nicht versucht einen benannten
- Cache zu empfangen (assoziiert mit einem existierenden Optionstemplate) indem die Methode
- <methodname>Zend_Cache_Manager::getCache()</methodname> verwendet wird.
- </para>
- <programlisting language="php"><![CDATA[
- $manager = new Zend_Cache_Manager;
- $dbCache = array(
- 'frontend' => array(
- 'name' => 'Core',
- 'options' => array(
- 'lifetime' => 7200,
- 'automatic_serialization' => true
- )
- ),
- 'backend' => array(
- 'name' => 'Core',
- 'options' => array(
- 'cache_dir' => '/path/to/cache'
- )
- )
- );
- $manager->setCacheTemplate('database', $dbCache);
- /**
- * Überall anders wo der Cache Manager vorhanden ist...
- */
- $databaseCache = $manager->getCache('database');
- ]]></programlisting>
- <para>
- Der Cache Manager erlaubt das einfache Erstellen von vor-instanzierten Caches durch
- Verwenden der Methode <methodname>Zend_Cache_Manager::setCache()</methodname>.
- </para>
- <programlisting language="php"><![CDATA[
- $frontendOptions = array(
- 'lifetime' => 7200,
- 'automatic_serialization' => true
- );
- $backendOptions = array(
- 'cache_dir' => '/path/to/cache'
- );
- $dbCache = Zend_Cache::factory('Core',
- 'File',
- $frontendOptions,
- $backendOptions);
- $manager = new Zend_Cache_Manager;
- $manager->setCache('database', $dbCache);
- /**
- * Überall anders wo der Cache Manager vorhanden ist...
- */
- $databaseCache = $manager->getCache('database');
- ]]></programlisting>
- <para>
- Wenn man aus irgendeinem Grund unsicher ist ob der Cache Manager einen vor-instanzierten
- Cache enthält oder ein relevantes Option Cache Template um einen auf Anfrage zu erstellen,
- kann die Existenz einer benannten Cachekonfiguration oder Instanz geprüft werden indem die
- Methode <methodname>Zend_Cache_Manager::hasCache()</methodname> verwendet wird.
- </para>
- <programlisting language="php"><![CDATA[
- $manager = new Zend_Cache_Manager;
- $dbCache = array(
- 'frontend' => array(
- 'name' => 'Core',
- 'options' => array(
- 'lifetime' => 7200,
- 'automatic_serialization' => true
- )
- ),
- 'backend' => array(
- 'name' => 'Core',
- 'options' => array(
- 'cache_dir' => '/path/to/cache'
- )
- )
- );
- $manager->setCacheTemplate('database', $dbCache);
- /**
- * Überall anders wo der Cache Manager vorhanden ist...
- */
- if ($manager->hasCache('database')) {
- $databaseCache = $manager->getCache('database');
- } else {
- // Erstelle einen Cache wenn keiner from Manager vorhanden ist
- }
- ]]></programlisting>
- <para>
- In einigen Szenarios könnte man eine Anzahl von generell zu verwendenden Caches definiert
- haben indem <classname>Zend_Cache_Manager</classname> verwendet wird, aber deren Optionen
- feintunen bevor Sie anhängig von Ihren Notwendigkeiten verwendet werden. Man kann vorher
- gesetzte Cache Templates on the fly bearbeiten bevor Sie instanziert werden indem die
- Methode <methodname>Zend_Cache_Manager::setTemplateOptions()</methodname> verwendet wird.
- </para>
- <programlisting language="php"><![CDATA[
- $manager = new Zend_Cache_Manager;
- $dbCache = array(
- 'frontend' => array(
- 'name' => 'Core',
- 'options' => array(
- 'lifetime' => 7200,
- 'automatic_serialization' => true
- )
- ),
- 'backend' => array(
- 'name' => 'Core',
- 'options' => array(
- 'cache_dir' => '/path/to/cache'
- )
- )
- );
- $manager->setCacheTemplate('database', $dbCache);
- /**
- * Überall anders wo der Cache Manager vorhanden ist...
- * Hier haben wir entschieden einige kommende Datenbankabfragen zu Memcache zu
- * Speichern statt dem vorkonfigurierten File Backend
- */
- $fineTuning = array(
- 'backend' => array(
- 'name' => 'Memcached',
- 'options' => array(
- 'servers' => array(
- array(
- 'host' => 'localhost',
- 'port' => 11211,
- 'persistent' => true,
- 'weight' => 1,
- 'timeout' => 5,
- 'retry_interval' => 15,
- 'status' => true,
- 'failure_callback' => ''
- )
- )
- )
- )
- );
- $manager->setTemplateOptions('database', $fineTuning);
- $databaseCache = $manager->getCache('database');
- ]]></programlisting>
- <para>
- Um zu helfen den Cache Manager sinnvoller zu machen wird
- <classname>Zend_Application_Resource_Cachemanager</classname> und auch der Action Helfer
- <classname>Zend_Controller_Action_Helper_Cache</classname> angeboten. Beide sind in den
- betreffenden Abschnitten des Referenz Handbuchs beschrieben.
- </para>
- <para>
- <classname>Zend_Cache_Manager</classname> enthält bereits vier vordefinierte Cache Templates
- welche "skeleton", "default", "page" und "tagcache" heißen. Der Standardcache ist ein
- einfacher Dateibasierter Cache welcher das Core Frontend verwendet und annimmt das ein
- cache_dir auf dem gleichen Level wie das konventionelle "public" Verzeichnis einer Zend
- Framework Anwendung existiert und "cache" heißt. Der Skeleton Cache ist aktuell ein
- <constant>NULL</constant> Cache, er enthält also keine Optionen. Die verbleibenden zwei
- Caches werden verwendet um einen standardmäßigen statischen Seitencache zu implementieren
- wobei statisches <acronym>HTML</acronym>, <acronym>XML</acronym> oder sogar
- <acronym>JSON</acronym> in statische Dateien unter <filename>/public</filename> geschrieben
- sein können. Die Kontrolle über einen statischen Seitencache wird über
- <classname>Zend_Controller_Action_Helper_Cache</classname> angeboten, und man kann
- die Einstellungen dieser "page" verändern und den "tagcache" den Sie verwendet um Tags
- zu verfolgen indem <methodname>Zend_Cache_Manager::setTemplateOptions()</methodname>
- verwendet wird, oder sogar <methodname>Zend_Cache_Manager::setCacheTemplate()</methodname>
- wenn alle deren Optionen überladen werden.
- </para>
- </sect1>
|