Zend_Cache-Cache_Manager.xml 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 21109 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.cache.cache.manager">
  5. <title>Der Cache Manager</title>
  6. <para>
  7. Es ist die Natur von Anwendungen eine Vielzahl an Caches jedes Types zu benötigen oft
  8. abhängig vom Controller, der Bibliothek oder dem Domainmodell auf das zugegriffen wird.
  9. Um die einfache Definition von <classname>Zend_Cache</classname> Optionen zu erlauben
  10. (wie von der Bootstrap), damit auf ein Cacheobjekt zugegriffen werden kann und nur ein
  11. minimales Setup im Sourcecode der Anwendung benötigt wird, wurde die Klasse
  12. <classname>Zend_Cache_Manager</classname> geschrieben. Diese Klasse wird von
  13. <classname>Zend_Application_Resource_Cachemanager</classname> verwendet um sicherzustellen
  14. das die Konfiguration der Bootstrap vorhanden ist, und
  15. <classname>Zend_Controller_Action_Helper_Cache</classname> um einen einfachen Zugriff und
  16. eine einfache Instanzierung von Controllern und anderen Helfern zu erlauben.
  17. </para>
  18. <para>
  19. Die grundsätzliche Operation dieser Komponente ist wie folgt. Der Cache Manager erlaubt es
  20. Benutzern "Option Templates" zu konfigurieren, grundsätzlich Optionen für ein Set von
  21. benannten Caches. Diese können gesetzt werden indem die Methode
  22. <methodname>Zend_Cache_Manager::setCacheTemplate()</methodname> verwendet wird. Diese
  23. Templates führen einen Cache nicht aus solange der Benutzer nicht versucht einen benannten
  24. Cache zu empfangen (assoziiert mit einem existierenden Optionstemplate) indem die Methode
  25. <methodname>Zend_Cache_Manager::getCache()</methodname> verwendet wird.
  26. </para>
  27. <programlisting language="php"><![CDATA[
  28. $manager = new Zend_Cache_Manager;
  29. $dbCache = array(
  30. 'frontend' => array(
  31. 'name' => 'Core',
  32. 'options' => array(
  33. 'lifetime' => 7200,
  34. 'automatic_serialization' => true
  35. )
  36. ),
  37. 'backend' => array(
  38. 'name' => 'Core',
  39. 'options' => array(
  40. 'cache_dir' => '/path/to/cache'
  41. )
  42. )
  43. );
  44. $manager->setCacheTemplate('database', $dbCache);
  45. /**
  46. * Überall anders wo der Cache Manager vorhanden ist...
  47. */
  48. $databaseCache = $manager->getCache('database');
  49. ]]></programlisting>
  50. <para>
  51. Der Cache Manager erlaubt das einfache Erstellen von vor-instanzierten Caches durch
  52. Verwenden der Methode <methodname>Zend_Cache_Manager::setCache()</methodname>.
  53. </para>
  54. <programlisting language="php"><![CDATA[
  55. $frontendOptions = array(
  56. 'lifetime' => 7200,
  57. 'automatic_serialization' => true
  58. );
  59. $backendOptions = array(
  60. 'cache_dir' => '/path/to/cache'
  61. );
  62. $dbCache = Zend_Cache::factory('Core',
  63. 'File',
  64. $frontendOptions,
  65. $backendOptions);
  66. $manager = new Zend_Cache_Manager;
  67. $manager->setCache('database', $dbCache);
  68. /**
  69. * Überall anders wo der Cache Manager vorhanden ist...
  70. */
  71. $databaseCache = $manager->getCache('database');
  72. ]]></programlisting>
  73. <para>
  74. Wenn man aus irgendeinem Grund unsicher ist ob der Cache Manager einen vor-instanzierten
  75. Cache enthält oder ein relevantes Option Cache Template um einen auf Anfrage zu erstellen,
  76. kann die Existenz einer benannten Cachekonfiguration oder Instanz geprüft werden indem die
  77. Methode <methodname>Zend_Cache_Manager::hasCache()</methodname> verwendet wird.
  78. </para>
  79. <programlisting language="php"><![CDATA[
  80. $manager = new Zend_Cache_Manager;
  81. $dbCache = array(
  82. 'frontend' => array(
  83. 'name' => 'Core',
  84. 'options' => array(
  85. 'lifetime' => 7200,
  86. 'automatic_serialization' => true
  87. )
  88. ),
  89. 'backend' => array(
  90. 'name' => 'Core',
  91. 'options' => array(
  92. 'cache_dir' => '/path/to/cache'
  93. )
  94. )
  95. );
  96. $manager->setCacheTemplate('database', $dbCache);
  97. /**
  98. * Überall anders wo der Cache Manager vorhanden ist...
  99. */
  100. if ($manager->hasCache('database')) {
  101. $databaseCache = $manager->getCache('database');
  102. } else {
  103. // Erstelle einen Cache wenn keiner from Manager vorhanden ist
  104. }
  105. ]]></programlisting>
  106. <para>
  107. In einigen Szenarios könnte man eine Anzahl von generell zu verwendenden Caches definiert
  108. haben indem <classname>Zend_Cache_Manager</classname> verwendet wird, aber deren Optionen
  109. feintunen bevor Sie anhängig von Ihren Notwendigkeiten verwendet werden. Man kann vorher
  110. gesetzte Cache Templates on the fly bearbeiten bevor Sie instanziert werden indem die
  111. Methode <methodname>Zend_Cache_Manager::setTemplateOptions()</methodname> verwendet wird.
  112. </para>
  113. <programlisting language="php"><![CDATA[
  114. $manager = new Zend_Cache_Manager;
  115. $dbCache = array(
  116. 'frontend' => array(
  117. 'name' => 'Core',
  118. 'options' => array(
  119. 'lifetime' => 7200,
  120. 'automatic_serialization' => true
  121. )
  122. ),
  123. 'backend' => array(
  124. 'name' => 'Core',
  125. 'options' => array(
  126. 'cache_dir' => '/path/to/cache'
  127. )
  128. )
  129. );
  130. $manager->setCacheTemplate('database', $dbCache);
  131. /**
  132. * Überall anders wo der Cache Manager vorhanden ist...
  133. * Hier haben wir entschieden einige kommende Datenbankabfragen zu Memcache zu
  134. * Speichern statt dem vorkonfigurierten File Backend
  135. */
  136. $fineTuning = array(
  137. 'backend' => array(
  138. 'name' => 'Memcached',
  139. 'options' => array(
  140. 'servers' => array(
  141. array(
  142. 'host' => 'localhost',
  143. 'port' => 11211,
  144. 'persistent' => true,
  145. 'weight' => 1,
  146. 'timeout' => 5,
  147. 'retry_interval' => 15,
  148. 'status' => true,
  149. 'failure_callback' => ''
  150. )
  151. )
  152. )
  153. )
  154. );
  155. $manager->setTemplateOptions('database', $fineTuning);
  156. $databaseCache = $manager->getCache('database');
  157. ]]></programlisting>
  158. <para>
  159. Um zu helfen den Cache Manager sinnvoller zu machen wird
  160. <classname>Zend_Application_Resource_Cachemanager</classname> und auch der Action Helfer
  161. <classname>Zend_Controller_Action_Helper_Cache</classname> angeboten. Beide sind in den
  162. betreffenden Abschnitten des Referenz Handbuchs beschrieben.
  163. </para>
  164. <para>
  165. <classname>Zend_Cache_Manager</classname> enthält bereits vier vordefinierte Cache Templates
  166. welche "skeleton", "default", "page" und "tagcache" heißen. Der Standardcache ist ein
  167. einfacher Dateibasierter Cache welcher das Core Frontend verwendet und annimmt das ein
  168. cache_dir auf dem gleichen Level wie das konventionelle "public" Verzeichnis einer Zend
  169. Framework Anwendung existiert und "cache" heißt. Der Skeleton Cache ist aktuell ein
  170. <constant>NULL</constant> Cache, er enthält also keine Optionen. Die verbleibenden zwei
  171. Caches werden verwendet um einen standardmäßigen statischen Seitencache zu implementieren
  172. wobei statisches <acronym>HTML</acronym>, <acronym>XML</acronym> oder sogar
  173. <acronym>JSON</acronym> in statische Dateien unter <filename>/public</filename> geschrieben
  174. sein können. Die Kontrolle über einen statischen Seitencache wird über
  175. <classname>Zend_Controller_Action_Helper_Cache</classname> angeboten, und man kann
  176. die Einstellungen dieser "page" verändern und den "tagcache" den Sie verwendet um Tags
  177. zu verfolgen indem <methodname>Zend_Cache_Manager::setTemplateOptions()</methodname>
  178. verwendet wird, oder sogar <methodname>Zend_Cache_Manager::setCacheTemplate()</methodname>
  179. wenn alle deren Optionen überladen werden.
  180. </para>
  181. </sect1>