File: Zend_Cache-Cache_Manager.xml

package info (click to toggle)
zendframework 1.12.9%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 133,584 kB
  • sloc: xml: 1,311,829; php: 570,173; sh: 170; makefile: 125; sql: 121
file content (205 lines) | stat: -rw-r--r-- 7,860 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
<?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>