[MANUAL] English:
[zend.git] / documentation / manual / pl / module_specs / Zend_Cache-Introduction.xml
blobd086edde272108d69a04523b7aee8b33545e7f6c
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <sect1 id="zend.cache.introduction">
4     <title>Wprowadzenie</title>
5     <para>
6         <classname>Zend_Cache</classname> zapewnia ogólny sposób buforowania danych.
7     </para>
8     <para>
9       Buforowanie w Zend Framework jest przeprowadzane przez frontendy, a
10       rekordy bufora są przechowywane za pomocą backendów (<emphasis>File</emphasis>,
11       <emphasis>Sqlite</emphasis>, <emphasis>Memcache</emphasis>...) przy użyciu uniwersalnego
12       systemu identyfikatorów ID oraz etykiet. Używając ich, łatwe jest
13       kasowanie specyficznych typów rekordów (na przykład: "usuń wszystkie
14       rekordy bufora oznaczone podaną etykietą").
15     </para>
16     <para>
17         Jądro modułu (<classname>Zend_Cache_Core</classname>) jest proste, uniwersalne i
18         konfigurowalne. Obecnie, dla twoich specyficznych potrzeb dostępne są
19         frontendy rozszerzające <classname>Zend_Cache_Core</classname> na przykład:
20         <emphasis>Output</emphasis>, <emphasis>File</emphasis>, <emphasis>Function</emphasis> 
21         oraz <emphasis>Class</emphasis>.
22     </para>
23     <example id="zend.cache.introduction.example-1">
24         <title>Pobieranie frontendu za pomocą Zend_Cache::factory()</title>
25         <para>
26             <methodname>Zend_Cache::factory()</methodname> tworzy instancję odpowiedniego
27             obiektu łączy je razem. W tym pierwszym przykładzie użyjemy
28             frontendu <emphasis>Core</emphasis> wraz z backendem <emphasis>File</emphasis>.
29         </para>
31         <programlisting language="php"><![CDATA[
32 $frontendOptions = array(
33    'lifetime' => 7200, // okres ważności bufora 2 godziny
34    'automatic_serialization' => true
37 $backendOptions = array(
38     'cache_dir' => './tmp/' // Katalog w którym mają być składowane pliku bufora
41 // pobieranie obiektu Zend_Cache_Core
42 $cache = Zend_Cache::factory('Core',
43                              'File',
44                              $frontendOptions,
45                              $backendOptions);
46 ]]></programlisting>
47    </example>
49    <note>
50        <title>Frontendy i backendy składające się z wielu słów</title>
51        <para>
52             Niektóre frontendy i backendy są nazwane przy użyciu wielu słów, na
53             przykład 'ZendPlatform'. Gdy określamy ich nazwę w metodzie fabryki,
54             oddzielamy wyrazy używając separatora wyrazów takiego jak spacja
55             (' '), myślnik ('-') lub kropka ('.').
56         </para>
57     </note>
59     <example id="zend.cache.introduction.example-2">
60         <title>Buforowanie wyniku zapytania do bazy danych</title>
61         <para>
62             Teraz gdy mamy frontend, możemy buforować dowolny typ danych
63             (włączyliśmy serializację). Na przykład, możemy buforować wynik
64             bardzo obciążającego zapytania do bazy danych. Kiedy jest buforowane,
65             nie ma nawet potrzeby aby łączyć się z bazą; rekordy są pobierane z
66             bufora, a następnie odserializowane.
67         </para>
68         <programlisting language="php"><![CDATA[
69 // obiekt $cache zainicjalizowany jak w poprzednim przykładzie
71 // sprawdzamy czy bufor istnieje:
72 if(!$result = $cache->load('myresult')) {
74     // bufor nie istnieje; łączymy się z bazą
76     $db = Zend_Db::factory( [...] );
78     $result = $db->fetchAll('SELECT * FROM huge_table');
80     $cache->save($result, 'myresult');
82 } else {
84     // bufor istnieje! dajmy o tym znać
85     echo "To pochodzi z bufora!\n\n";
89 print_r($result);
90 ]]></programlisting>
91     </example>
92     <example id="zend.cache.introduction.example-3">
93         <title>Buforowanie danych wyjściowych przy użyciu frontendu <classname>Zend_Cache</classname></title>
94         <para>
95             Sekcje w których chcemy buforować dane wyjściowe oznaczamy dodając
96             pewną warunkową logikę, ograniczającą sekcję za pomocą metod
97             <methodname>start()</methodname> oraz <methodname>end()</methodname> (to odpowiada
98             pierwszemu przykładowi i jest główną strategią buforowania).
99         </para><para>
100             Wewnątrz wyświetlaj dane jak zawsze - wszystkie dane wyjściowe będą
101             buforowane aż do napotkania metody <methodname>end()</methodname>. Podczas
102             następnego wywołania, cała sekcja będzie ominięta, a użyte zostaną
103             dane z bufora. (tak długo jak rekord bufora jest prawidłowy).
104         </para>
105         <programlisting language="php"><![CDATA[
106 $frontendOptions = array(
107    'lifetime' => 30,                   // okres ważności bufora 30 sekund
108    'automatic_serialization' => false  // to i tak jest domyślna wartość
111 $backendOptions = array('cache_dir' => './tmp/');
113 $cache = Zend_Cache::factory('Output',
114                              'File',
115                              $frontendOptions,
116                              $backendOptions);
118 // przekazujemy unikalny identyfikator do metody start()
119 if(!$cache->start('mypage')) {
120     // wyświetlamy jak zawsze:
122     echo 'Witajcie! ';
123     echo 'To jest buforowane ('.time().') ';
125     $cache->end(); // dane wyjściowe są zapisywane i wysyłane do przeglądarki
128 echo 'To nie jest nigdy buforowane ('.time().').';
129 ]]></programlisting>
130        <para>
131            Zauważ, że wyświetlamy rezultat funkcji <methodname>time()</methodname> dwa razy;
132            jest to coś dynamicznego, aby zademenstrować przeznaczenie. Spróbuj
133            uruchomić to i odświeżyć kilka razy; zauważysz, że pierwsza liczba
134            się nie zmienia, a druga za każdym razem jest inna. Tak jest ponieważ
135            pierwsza liczba była wyświetlona w sekcji buforowanej więc została
136            zapisana. Po upływie pół minuty (ustawiliśmy okres ważności bufora na
137            30 sekund) powinny ponownie się zgadzać ponieważ bufor wygasł -- i
138            został zapisany ponownie. Powinieneś to sprawdzić w swojej
139            przeglądarce lub w konsoli.
140        </para>
141     </example>
142     <note><para>
143         Kiedy używasz Zend_Cache, zwracaj uwagę na ważny identyfikator bufora
144         (przekazany do metod <methodname>save()</methodname> oraz <methodname>start()</methodname>).
145         Musi być unikalny dla każdego zasobu, który buforujesz, inaczej nie
146         powiązane buforowane rekordy mogą się nawzajem ścierać, lub gorzej,
147         jeden może wyświetlić się w miejscu drugiego.
148     </para></note>
149 </sect1>