Zend_Cache-Cache_Manager.xml 7.4 KB

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