[MANUAL] English:
[zend.git] / documentation / manual / pl / module_specs / Zend_Cache-Theory.xml
blobd172a5cdd123b2283c18c36e8f985c7b119cd229
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <sect1 id="zend.cache.theory">
4     <title>Teoria buforowania</title>
5     <para>
6         Są trzy kluczowe składniki w <classname>Zend_Cache</classname>. Pierwszym jest unikalny
7         identyfikator (łańcuch znakow) który jest używany do identyfikowania
8         rekordów bufora. Drugim jest dyrektywa <emphasis>'lifetime'</emphasis> jaką
9         pokazano w przykładach; definiuje ona jak długo buforowany zasób jest
10         uznawany za 'świeży'. Trzecim kluczowym składnikiem jest warunkowe
11         wykonanie więc część twojego kodu może być ominięta, co powoduje wzrost
12         wydajności. Główna funkcja frontendu (np.
13         <methodname>Zend_Cache_Core::get()</methodname>) jest zawsze zaprojektowana tak, aby
14         zwracała  wartość false gdy bufor jest nieaktualny, jeśli jest to
15         sensowne dla danego frontendu. To pozwala użytkownikom na ominięcie bloków
16         kodu, które chcą buforować, zawierając je w wyrażenie <emphasis>if(){ ... }</emphasis>
17         gdzie warunkiem jest metoda <classname>Zend_Cache</classname>. Na końcu 
18         takich bloków musisz zapisać to co wygenerowałeś (np. za pomocą metody 
19         <methodname>Zend_Cache_Core::save()</methodname>).
20     </para>
21     <note><para>
22         Warunkowe uruchamianie twojego kodu nie jest konieczne w niektórych
23         frontendach (na przykład <emphasis>Function</emphasis>), gdzie cała logika
24         jest zaimplementowana we frontendzie.
25     </para></note>
26     <note><para>
27         'bufor istnieje' jest wyrażeniem określającym sytuację, w której
28         rekord bufora został znaleziony, jest poprawny i jest 'świeży'
29         'fresh' (innymi słowy jeszcze nie wygasł). 'Bufor nie istnieje' jest
30         wszystkim innym. Kiedy zdarzy się, że bufor nie istnieje musisz
31         wygenerować swoje dane (tak jak robisz to normalnie) i zapisać je w
32         buforze. Z drugiej strony, gdy bufor istnieje, backend automatycznie
33         pobierze rekord z bufora.
34     </para></note>
35     <sect2 id="zend.cache.factory">
36         <title>Metoda fabryki Zend_Cache</title>
37         <para>
38             Dobrym sposobem utworzenia użytecznej instancji frontendu
39             <classname>Zend_Cache</classname> jest ten pokazany w poniższym przykładzie:
40         </para>
41         <programlisting language="php"><![CDATA[
42 // Wybieramy backend (na przykład 'File' lub 'Sqlite'...)
43 $backendName = '[...]';
45 // Wybieramy frontend (na przykład 'Core', 'Output', 'Page'...)
46 $frontendName = '[...]';
48 // Ustawiamy tablicę opcji dla wybranego frontendu
49 $frontendOptions = array([...]);
51 // Ustawiamy tablicę opcji dla wybranego backendu
52 $backendOptions = array([...]);
54 // Tworzymy instancję klasy Zend_Cache
55 // (oczywiście dwa ostatnie argumenty są opcjonalne)
56 $cache = Zend_Cache::factory($frontendName, 
57                              $backendName, 
58                              $frontendOptions, 
59                              $backendOptions);
60 ]]></programlisting>
61         <para>
62             W poniższych przykładach założymy że zmienna <varname>$cache</varname> zawiera
63             poprawną instancję frontendu i to, że rozumiesz jak przekazać
64             parametry do wybranego backendu.
65         </para>
66         <note><para>
67             Zawsze używaj metody <methodname>Zend_Cache::factory()</methodname> aby pobrać
68             instancje frontendu. Tworzenie instancji frontendu czy backendu
69             nie będzie przynosiło oczekiwanych rezultatów.
70         </para></note>
71     </sect2>
73     <sect2 id="zend.cache.tags">
74         <title>Nadawanie etykiet rekordom</title>
75         <para>
76             Etykiety są sposobem kategoryzowania rekordów bufora. Kiedy zapisujesz bufor
77             za pomocą metody <methodname>save()</methodname>, możesz ustawić tablicę etykiet, które
78             mają być przypisane danemu rekordowi. Wtedy będziesz miał możliwość
79             usuwania wszystkich rekordów bufora oznaczonych daną etykietą (lub etykietami):
80         </para>
81         <programlisting language="php"><![CDATA[
82 $cache->save($huge_data, 'myUniqueID', array('tagA', 'tagB', 'tagC'));
83 ]]></programlisting>
84         <note><para>
85             Zauważ, że metoda <methodname>save()</methodname> akceptuje opcjonalny czwarty
86             argument: <varname>$specificLifetime</varname> (jeśli jego wartość jest
87             inna od false, ustawiany jest określony czas ważności dla
88             konkretnego rekordu bufora.
89         </para></note>
90     </sect2>
91     <sect2 id="zend.cache.clean">
92         <title>Czyszczenie bufora</title>
93         <para>
94             Aby usunąć/unieważnić rekord bufora o określonym id, możesz użyć
95             metody <methodname>remove()</methodname>:
96         </para>
97         <programlisting language="php"><![CDATA[
98 $cache->remove('idToRemove');
99 ]]></programlisting>
100         <para>
101             Aby usunąć/unieważnić wiele rekordów bufora za jednym razem, możesz
102             użyć metody <methodname>clean()</methodname>. Na przykład aby usunąć wszystkie
103             rekordy bufora:
104         </para>
105         <programlisting language="php"><![CDATA[
106 // czyszczenie wszystkich rekordów
107 $cache->clean(Zend_Cache::CLEANING_MODE_ALL);
109 // czyszczenie jedynie nieaktualnych rekordów
110 $cache->clean(Zend_Cache::CLEANING_MODE_OLD);
111 ]]></programlisting>
112         <para>
113             Jeśli chcesz usunąć rekordy bufora oznaczone etykietami 'tagA' oraz 'tagC':
114         </para>
115         <programlisting language="php"><![CDATA[
116 $cache->clean(
117     Zend_Cache::CLEANING_MODE_MATCHING_TAG, 
118     array('tagA', 'tagC')
120 ]]></programlisting>
121         <para>
122             Jeśli chcesz usunąć rekordy bufora nieoznaczone etykietami 'tagA' oraz 'tagC':
123         </para>
124         <programlisting language="php"><![CDATA[
125 $cache->clean(
126     Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG,
127     array('tagA', 'tagC')
129 ]]></programlisting>
130         <para>
131             Jeśli chcesz usunąć rekordy bufora oznaczone etykietami 'tagA' lub 'tagC':
132         </para>
133         <programlisting language="php"><![CDATA[
134 $cache->clean(
135     Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG,
136     array('tagA', 'tagC')
138 ]]></programlisting>
139         <para>
140             Dostępne tryby czyszczenia bufora to: <constant>CLEANING_MODE_ALL</constant>,
141             <constant>CLEANING_MODE_OLD</constant>, <constant>CLEANING_MODE_MATCHING_TAG</constant>,
142             <constant>CLEANING_MODE_NOT_MATCHING_TAG</constant> oraz
143             <constant>CLEANING_MODE_MATCHING_ANY_TAG</constant>. Trzy ostatnie, jak
144             nazwa wskazuje, mogą w operacji czyszczenia być użyte wraz z tablicą
145             etykiet.
146         </para>
147     </sect2>
148 </sect1>