Zend_Cache-Frontends.xml 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813
  1. <sect1 id="zend.cache.frontends">
  2. <title>Frontendy Zend_Cache</title>
  3. <sect2 id="zend.cache.core">
  4. <title>Zend_Cache_Core</title>
  5. <sect3 id="zend.cache.core.introduction">
  6. <title>Wprowadzenie</title>
  7. <para>
  8. <code>Zend_Cache_Core</code> jest specjalnym frontendem ponieważ
  9. jest on jądrem modułu. Jest on podstawowym frontendem bufora i
  10. jest rozszerzany przez inne klasy.
  11. </para>
  12. <note><para>
  13. Wszystkie frontendy dziedziczą z klasy <code>Zend_Cache_Core</code>
  14. więc jej metody i opcje (opisane niżej) są także dostępne w innych
  15. frontendach, dlatego nie będą tu opisane.
  16. </para></note>
  17. </sect3>
  18. <sect3 id="zend.cache.core.options">
  19. <title>Dostępne opcje</title>
  20. <para>
  21. Te opcje są przekazywane do metody fabryki jako pokazano w
  22. poprzednich przykładach.
  23. </para>
  24. <table id="zend.cache.frontends.core.options.table">
  25. <title>Dostępne opcje</title>
  26. <tgroup cols="4">
  27. <thead>
  28. <row>
  29. <entry>Opcja</entry>
  30. <entry>Typ danych</entry>
  31. <entry>Domyślna wartość</entry>
  32. <entry>Opis</entry>
  33. </row>
  34. </thead>
  35. <tbody>
  36. <row>
  37. <entry><code>caching</code></entry>
  38. <entry><code>boolean</code></entry>
  39. <entry><code>true</code></entry>
  40. <entry>
  41. włącza / wyłącza buforowanie (może być użyteczne do
  42. sprawdzania buforowanych skryptów)
  43. </entry>
  44. </row>
  45. <row>
  46. <entry><code>cache_id_prefix</code></entry>
  47. <entry><code>string</code></entry>
  48. <entry><code>null</code></entry>
  49. <entry>
  50. określa rzedrostek dla wszystkich identyfikatorów
  51. bufora, jeśli ma wartość <code>null</code>, nie
  52. będzie użyty żaden przedrostek. Przedrostek
  53. identyfikatorów zasadniczo tworzy przestrzeń nazw
  54. dla buforu, pozwalając na korzystanie z dzielonego
  55. bufora przez kilka aplikacji czy serwisów
  56. internetowych. Każda aplikacja czy serwis
  57. internetowy powinny używać innego przedrostka,
  58. więc określone identyfikatory będą mogły być
  59. użyte więcej niż raz.
  60. </entry>
  61. </row>
  62. <row>
  63. <entry><code>lifetime</code></entry>
  64. <entry><code>int</code></entry>
  65. <entry><code>3600</code></entry>
  66. <entry>
  67. okres ważności bufora (w sekundach), jeśli ustawiony na
  68. <code>null</code>, bufor będzie ważny na zawsze
  69. </entry>
  70. </row>
  71. <row>
  72. <entry><code>logging</code></entry>
  73. <entry><code>boolean</code></entry>
  74. <entry><code>false</code></entry>
  75. <entry>
  76. jeśli ma wartość true, aktywowane jest logowanie za pomocą
  77. <code>Zend_Log</code> is activated (ale system jest wolniejszy)
  78. </entry>
  79. </row>
  80. <row>
  81. <entry><code>write_control</code></entry>
  82. <entry><code>boolean</code></entry>
  83. <entry><code>true</code></entry>
  84. <entry>
  85. Włącza / wyłącza kontrolę zapisu (bufor jest odczytywany zaraz
  86. po zapisaniu aby wykryć uszkodzone wpisy), włączając kontrolę
  87. zapisu lekko zwolniesz zapisywanie bufora, ale nie będzie to
  88. miało wpływu na jego odczytywanie (może to wykryć niektóre
  89. uszkodzone pliki bufora, ale nie jest to perfekcyjna kontrola)
  90. </entry>
  91. </row>
  92. <row>
  93. <entry><code>automatic_serialization</code></entry>
  94. <entry><code>boolean</code></entry>
  95. <entry><code>false</code></entry>
  96. <entry>
  97. Włącza / wyłącza serializację, może być użyte do bezpośredniego
  98. zapisywania danych, które nie są łańcuchami znaków (ale jest to wolniejsze)
  99. </entry>
  100. </row>
  101. <row>
  102. <entry><code>automatic_cleaning_factor</code></entry>
  103. <entry><code>int</code></entry>
  104. <entry><code>10</code></entry>
  105. <entry>
  106. Włącza / ustawia proces automatycznego czyszczenia (garbage collector):
  107. 0 oznacza brak automatycznego czyszczenia, 1 oznacza systematyczne czyszczenie
  108. bufora, a x &gt; 1 oznacza automatyczne losowe czyszczenie 1 raz na x operacji
  109. zapisu.
  110. </entry>
  111. </row>
  112. <row>
  113. <entry><code>ignore_user_abort</code></entry>
  114. <entry><code>boolean</code></entry>
  115. <entry><code>false</code></entry>
  116. <entry>
  117. jeśli ma wartość true, komponent ustawi flagę
  118. PHP ignore_user_abort wewnątrz metody save()
  119. aby zapobiec uszkodzeniom buforu w niektórych
  120. przypadkach
  121. </entry>
  122. </row>
  123. </tbody>
  124. </tgroup>
  125. </table>
  126. </sect3>
  127. <sect3 id="zend.cache.core.examples">
  128. <title>Przykłady</title>
  129. <para>
  130. Przykład jest podany w dokumentacji na samym początku.
  131. </para>
  132. <para>
  133. Jeśli w buforze przechowujesz tylko łańcuchy znakow (ponieważ z opcją "automatic_serialization" możliwe
  134. jest przechowywanie wartości logicznych), możesz użyć bardziej kompaktowej konstrukcji:
  135. </para>
  136. <programlisting role="php"><![CDATA[
  137. // zakładamy, że mamy już obiekt $cache
  138. $id = 'myBigLoop'; // id bufora czyli "tego co chcemy buforować"
  139. if (!($data = $cache->load($id))) {
  140. // brak bufora
  141. $data = '';
  142. for ($i = 0; $i < 10000; $i++) {
  143. $data = $data . $i;
  144. }
  145. $cache->save($data);
  146. }
  147. // [...] przetwarzaj dane $data (wyświetl je, przekaż itp.)
  148. ]]>
  149. </programlisting>
  150. <para>
  151. Jeśli chcesz buforować wiele bloków lub instancji danych, idea
  152. jest ta sama:
  153. </para>
  154. <programlisting role="php"><![CDATA[
  155. // upewnij się, że używasz unikalnych identyfiikatorów:
  156. $id1 = 'foo';
  157. $id2 = 'bar';
  158. // blok 1
  159. if (!($data = $cache->load($id1))) {
  160. // brak bufora
  161. $data = '';
  162. for ($i=0;$i<10000;$i++) {
  163. $data = $data . $i;
  164. }
  165. $cache->save($data);
  166. }
  167. echo($data);
  168. // to nigdy nie jest buforowane
  169. echo('NEVER CACHED! ');
  170. // blok 2
  171. if (!($data = $cache->load($id2))) {
  172. // brak bufora
  173. $data = '';
  174. for ($i=0;$i<10000;$i++) {
  175. $data = $data . '!';
  176. }
  177. $cache->save($data);
  178. }
  179. echo($data);
  180. ]]>
  181. </programlisting>
  182. <para>
  183. Jeśli chcesz buforować specjalne wartości (np. wartości logiczne
  184. przy włączonej opcji "automatic_serialization") lub puste
  185. łańcuchy znaków, nie możesz używać uproszczonej konstrukcji
  186. przedstawionej powyżej. Musisz jawnie sprawdzić rekord bufora.
  187. </para>
  188. <programlisting role="php"><![CDATA[
  189. // konstrukcja uproszczona (nie działa poprawnie dla pustych
  190. // łańcuchów znaków i wartości logicznych)
  191. if (!($data = $cache->load($id))) {
  192. // brak bufora
  193. // [...] tworzymy dane $data
  194. $cache->save($data);
  195. }
  196. // pracujemy na danych $data
  197. // [...]
  198. // konstrukcja kompletna (działa zawsze)
  199. if (!($cache->test($id))) {
  200. // brak bufora
  201. // [...] tworzymy dane $data
  202. $cache->save($data);
  203. } else {
  204. // bufor został znaleziony
  205. $data = $cache->load($id);
  206. }
  207. // pracujemy na danych $data
  208. ]]>
  209. </programlisting>
  210. </sect3>
  211. </sect2>
  212. <sect2 id="zend.cache.frontend.output">
  213. <title>Zend_Cache_Frontend_Output</title>
  214. <sect3 id="zend.cache.frontend.output.introduction">
  215. <title>Wprowadzenie</title>
  216. <para>
  217. <code>Zend_Cache_Frontend_Output</code> jest frontendem przechwytującym
  218. dane wyjściowe. Przejmuje on wyświetlanie danych wyjściowych w PHP
  219. przechwytując wszystko co jest pomiędzy metodami <code>start()</code>
  220. oraz <code>end()</code>.
  221. </para>
  222. </sect3>
  223. <sect3 id="zend.cache.frontend.output.options">
  224. <title>Dostępne opcje</title>
  225. <para>
  226. Ten frontend nie ma żadnych specyficznych opcji innych niż te
  227. z <code>Zend_Cache_Core</code>.
  228. </para>
  229. </sect3>
  230. <sect3 id="zend.cache.frontend.output.examples">
  231. <title>Przykłady</title>
  232. <para>
  233. Przykład jest podany w dokumentacji na samym początku. To są główne różnice:
  234. </para>
  235. <programlisting role="php"><![CDATA[
  236. // jeśli bufor nie istnieje, przechwytywane są dane wyjściowe
  237. if (!($cache->start('mypage'))) {
  238. // wyświetlaj jak zawsze
  239. echo 'Witaj! ';
  240. echo 'To jest buforowane ('.time().') ';
  241. $cache->end(); // kończy się wyświetlanie danych
  242. }
  243. echo 'To nie jest nigdy buforowane ('.time().').';
  244. ]]>
  245. </programlisting>
  246. <para>
  247. Używając tej formy bardzo łatwe jest ustawienie buforowania
  248. danych wyjściowych w twoim aktualnie działającym projekcie przy
  249. małej ilości przeróbek w kodzie lub przy ich braku.
  250. </para>
  251. </sect3>
  252. </sect2>
  253. <sect2 id="zend.cache.frontend.function">
  254. <title>Zend_Cache_Frontend_Function</title>
  255. <sect3 id="zend.cache.frontend.function.introduction">
  256. <title>Wprowadzenie</title>
  257. <para>
  258. Frontend <code>Zend_Cache_Frontend_Function</code> buforuje
  259. rezultaty wywołań funkcji. Posiada on jedną metodą nazwaną
  260. <code>call()</code>, ktora przyjmuje nazwę funkcji oraz
  261. parametry do wywołania w tablicy.
  262. </para>
  263. </sect3>
  264. <sect3 id="zend.cache.frontend.function.options">
  265. <title>Dostępne opcje</title>
  266. <table>
  267. <title>Dostępne opcje</title>
  268. <tgroup cols="4">
  269. <thead>
  270. <row>
  271. <entry>Opcja</entry>
  272. <entry>Typ danych</entry>
  273. <entry>Domyślna wartość</entry>
  274. <entry>Opis</entry>
  275. </row>
  276. </thead>
  277. <tbody>
  278. <row>
  279. <entry><code>cache_by_default</code></entry>
  280. <entry><code>boolean</code></entry>
  281. <entry><code>true</code></entry>
  282. <entry>
  283. jeśli ma wartość true, wywołania funkcji będą
  284. domyślnie buforowane
  285. </entry>
  286. </row>
  287. <row>
  288. <entry><code>cached_functions</code></entry>
  289. <entry><code>array</code></entry>
  290. <entry></entry>
  291. <entry>
  292. nazwy funkcji które mają być zawsze buforowane
  293. </entry>
  294. </row>
  295. <row>
  296. <entry><code>non_cached_functions</code></entry>
  297. <entry><code>array</code></entry>
  298. <entry></entry>
  299. <entry>
  300. nazwy funkcji które nigdy nie mają być buforowane
  301. </entry>
  302. </row>
  303. </tbody>
  304. </tgroup>
  305. </table>
  306. </sect3>
  307. <sect3 id="zend.cache.frontend.function.examples">
  308. <title>Przykłady</title>
  309. <para>
  310. Użycie funkcji <code>call()</code> jest takie samo jak użycie
  311. funkcji <code>call_user_func_array()</code> w PHP:
  312. </para>
  313. <programlisting role="php"><![CDATA[
  314. $cache->call('veryExpensiveFunc', $params);
  315. // $params jest tablicą
  316. // przykładowo aby wywołać (z buforowaniem) funkcję veryExpensiveFunc(1, 'foo', 'bar'), użyj
  317. // $cache->call('veryExpensiveFunc', array(1, 'foo', 'bar'))
  318. ]]>
  319. </programlisting>
  320. <para>
  321. Frontend <code>Zend_Cache_Frontend_Function</code> jest na tyle sprytny,
  322. że buforuje zarówno wartość zwracaną przez funkcję, jak i wszystkie
  323. dane wyjściowe, które ona wypisuje.
  324. </para>
  325. <note><para>
  326. Możesz przekazać dowolną wbudowaną funkcję lub zdefiniowną przez
  327. użytkownika z wyjątkiem <code>array()</code>, <code>echo()</code>,
  328. <code>empty()</code>, <code>eval()</code>, <code>exit()</code>,
  329. <code>isset()</code>, <code>list()</code>, <code>print()</code>
  330. oraz <code>unset()</code>.
  331. </para></note>
  332. </sect3>
  333. </sect2>
  334. <sect2 id="zend.cache.frontend.class">
  335. <title>Zend_Cache_Frontend_Class</title>
  336. <sect3 id="zend.cache.frontend.class.introduction">
  337. <title>Wprowadzenie</title>
  338. <para>
  339. Frontend <code>Zend_Cache_Frontend_Class</code> różnie się od
  340. frontendu <code>Zend_Cache_Frontend_Function</code> tym, że
  341. umożliwia buforowanie wywołań metod obiektów (także statycznych)
  342. </para>
  343. </sect3>
  344. <sect3 id="zend.cache.frontend.class.options">
  345. <title>Dostępne opcje</title>
  346. <table id="zend.cache.frontends.class.options.table">
  347. <title>Dostępne opcje</title>
  348. <tgroup cols="4">
  349. <thead>
  350. <row>
  351. <entry>Opcja</entry>
  352. <entry>Typ danych</entry>
  353. <entry>Domyślna wartość</entry>
  354. <entry>Opis</entry>
  355. </row>
  356. </thead>
  357. <tbody>
  358. <row>
  359. <entry><code>cached_entity</code> (wymagane)</entry>
  360. <entry><code>mixed</code></entry>
  361. <entry></entry>
  362. <entry>
  363. jeśli ustawiona jest nazwa klasy, będziemy buforować klasę
  364. abstrakcyjną i używać tylko statycznych wywołań; jeśli ustawiony
  365. jest obiekt będziemy buforować metody tego obiektu
  366. </entry>
  367. </row>
  368. <row>
  369. <entry><code>cache_by_default</code></entry>
  370. <entry><code>boolean</code></entry>
  371. <entry><code>true</code></entry>
  372. <entry>
  373. jeśli ma wartość true, wywołania będą domyślnie buforowane
  374. </entry>
  375. </row>
  376. <row>
  377. <entry><code>cached_methods</code></entry>
  378. <entry><code>array</code></entry>
  379. <entry></entry>
  380. <entry>
  381. nazwy metod które mają być zawsze buforowane
  382. </entry>
  383. </row>
  384. <row>
  385. <entry><code>non_cached_methods</code></entry>
  386. <entry><code>array</code></entry>
  387. <entry></entry>
  388. <entry>
  389. nazwy metod które nie mają być nigdy buforowane
  390. </entry>
  391. </row>
  392. </tbody>
  393. </tgroup>
  394. </table>
  395. </sect3>
  396. <sect3 id="zend.cache.frontend.class.examples">
  397. <title>Przykłady</title>
  398. <para>
  399. Na przykład, aby buforować statyczne wywołania:
  400. </para>
  401. <programlisting role="php"><![CDATA[
  402. class Test {
  403. // metoda statyczna
  404. public static function foobar($param1, $param2) {
  405. echo "foobar_output($param1, $param2)";
  406. return "foobar_return($param1, $param2)";
  407. }
  408. }
  409. // [...]
  410. $frontendOptions = array(
  411. 'cached_entity' => 'Test' // Nazwa klasy
  412. );
  413. // [...]
  414. # buforowane wywołanie
  415. $result = $cache->foobar('1', '2');
  416. ]]>
  417. </programlisting>
  418. <para>
  419. Aby buforować klasyczne wywołania metod:
  420. </para>
  421. <programlisting role="php"><![CDATA[
  422. class Test {
  423. private $_string = 'hello !';
  424. public function foobar2($param1, $param2) {
  425. echo($this->_string);
  426. echo "foobar2_output($param1, $param2)";
  427. return "foobar2_return($param1, $param2)";
  428. }
  429. }
  430. // [...]
  431. $frontendOptions = array(
  432. 'cached_entity' => new Test() // instancja klasy
  433. );
  434. // [...]
  435. # buforowane wywołanie
  436. $result = $cache->foobar2('1', '2');
  437. ]]>
  438. </programlisting>
  439. </sect3>
  440. </sect2>
  441. <sect2 id="zend.cache.frontends.file">
  442. <title>Zend_Cache_Frontend_File</title>
  443. <sect3 id="zend.cache.frontends.file.introduction">
  444. <title>Wprowadzenie</title>
  445. <para>
  446. <code>Zend_Cache_Frontend_File</code> jeest frontendem działającym
  447. w oparciu o datę modyfikacji "głównego pliku". Jest to bardzo
  448. interesujące, na przykład przy zagadnieniach związanych z konfiguracją
  449. czy szablonami.
  450. </para>
  451. <para>
  452. Na przykład, jeśli masz plik konfiguracyjny XML, który jest analizowany
  453. przez funkcję zwracającą obiekt konfiguracji (na przykład <code>Zend_Config</code>).
  454. Za pomocą frontendu <code>Zend_Cache_Frontend_File</code>, możesz przechować
  455. obiekt konfiguracji w buforze (aby zapobiec analizowaniu pliku konfiguracyjnego
  456. XML za każdym razem), ale przy zależności od "głównego pliku".
  457. Więc jeśli plik konfiguracyjny XML zostanie zmodyfikowany, bufor natychmiast
  458. straci ważność.
  459. </para>
  460. </sect3>
  461. <sect3 id="zend.cache.frontends.file.options">
  462. <title>Dostępne opcje</title>
  463. <table id="zend.cache.frontends.file.options.table">
  464. <title>Dostępne opcje</title>
  465. <tgroup cols="4">
  466. <thead>
  467. <row>
  468. <entry>Opcja</entry>
  469. <entry>Typ danych</entry>
  470. <entry>Domyślna wartość</entry>
  471. <entry>Opis</entry>
  472. </row>
  473. </thead>
  474. <tbody>
  475. <row>
  476. <entry><code>master_file (mandatory)</code></entry>
  477. <entry><code>string</code></entry>
  478. <entry><code></code></entry>
  479. <entry>
  480. kompletna ścieżka i nazwa głównego pliku
  481. </entry>
  482. </row>
  483. </tbody>
  484. </tgroup>
  485. </table>
  486. </sect3>
  487. <sect3 id="zend.cache.frontends.file.examples">
  488. <title>Przykłady</title>
  489. <para>
  490. Użycie tego frontendu jest takie same jak <code>Zend_Cache_Core</code>.
  491. Nie ma potrzeby zamieszczania specyficznego przykładu - jedyną rzeczą
  492. do zrobienia jest zdefiniowanie pliku <code>master_file</code> gdy
  493. używamy metody fabryki.
  494. </para>
  495. </sect3>
  496. </sect2>
  497. <sect2 id="zend.cache.frontends.page">
  498. <title>Zend_Cache_Frontend_Page</title>
  499. <sect3 id="zend.cache.frontends.page.introduction">
  500. <title>Wprowadzenie</title>
  501. <para>
  502. Frontend <code>Zend_Cache_Frontend_Page</code> działa jak <code>Zend_Cache_Frontend_Output</code>
  503. ale jest zaprojektowany dla kompletnej strony. Nie jest możliwe użycie <code>Zend_Cache_Frontend_Page</code>
  504. do buforowania pojedynczego bloku.
  505. </para>
  506. <para>
  507. Z drugiej strony, identyfikator bufora jest obliczany na podstawie
  508. <code>$_SERVER['REQUEST_URI']</code> oraz (zależnie od opcji)
  509. <code>$_GET</code>, <code>$_POST</code>, <code>$_SESSION</code>, <code>$_COOKIE</code>, <code>$_FILES</code>.
  510. Jeszcze lepiej, masz tylko jedną metodę do wywołania (<code>start()</code>)
  511. ponieważ metoda <code>end()</code> jest wywoływana w pełni automatycznie
  512. na końcu strony.
  513. </para>
  514. <para>
  515. Obecnie nie jest to zaimplementowane, ale planujemy dodać warunkowy system HTTP
  516. w celu oszczędzania transferu (system wyśle nagłówek HTTP 304 Not Modified jeśli
  517. bufor istnieje i gdy przeglądarka ma aktualną wersję bufora).
  518. </para>
  519. </sect3>
  520. <sect3 id="zend.cache.frontends.page.options">
  521. <title>Dostępne opcje (for this frontend in Zend_Cache factory)</title>
  522. <table id="zend.cache.frontends.page.options.table">
  523. <title>Dostępne opcje</title>
  524. <tgroup cols="4">
  525. <thead>
  526. <row>
  527. <entry>Opcja</entry>
  528. <entry>Typ danych</entry>
  529. <entry>Domyślna wartość</entry>
  530. <entry>Opis</entry>
  531. </row>
  532. </thead>
  533. <tbody>
  534. <row>
  535. <entry><code>http_conditional</code></entry>
  536. <entry><code>boolean</code></entry>
  537. <entry><code>false</code></entry>
  538. <entry>
  539. użyj systemu http_conditional (obecnie jeszcze nie zaimplementowane)
  540. </entry>
  541. </row>
  542. <row>
  543. <entry><code>debug_header</code></entry>
  544. <entry><code>boolean</code></entry>
  545. <entry><code>false</code></entry>
  546. <entry>
  547. jeśli ma wartość true, testowy tekst jest dodawany przed każdą buforowaną stroną
  548. </entry>
  549. </row>
  550. <row>
  551. <entry><code>default_options</code></entry>
  552. <entry><code>array</code></entry>
  553. <entry><code>array(...zobacz niżej...)</code></entry>
  554. <entry>
  555. asocjacyjna tablica domyślnych opcji:
  556. <itemizedlist>
  557. <listitem>
  558. <para>
  559. <code>(boolean, domyślnie wartość true) cache</code> :
  560. bufor jest włączony jeśli ma wartość true
  561. </para>
  562. </listitem>
  563. <listitem>
  564. <para>
  565. <code>(boolean, domyślnie wartość false) cache_with_get_variables</code> :
  566. jeśli ma wartość true, buforowanie jest włączone nawet wtedy gdy są jakieś
  567. zmienne w tablicy <code>$_GET</code>
  568. </para>
  569. </listitem>
  570. <listitem>
  571. <para>
  572. <code>(boolean, domyślnie wartość false) cache_with_post_variables</code> :
  573. jeśli ma wartość true, buforowanie jest włączone nawet wtedy gdy są jakieś
  574. zmienne w tablicy <code>$_POST</code>
  575. </para>
  576. </listitem>
  577. <listitem>
  578. <para>
  579. <code>(boolean, domyślnie wartość false) cache_with_session_variables</code> :
  580. jeśli ma wartość true, buforowanie jest włączone nawet wtedy gdy są jakieś
  581. zmienne w tablicy <code>$_SESSION</code>
  582. </para>
  583. </listitem>
  584. <listitem>
  585. <para>
  586. <code>(boolean, domyślnie wartość false) cache_with_files_variables</code> :
  587. jeśli ma wartość true, buforowanie jest włączone nawet wtedy gdy są jakieś
  588. zmienne w tablicy <code>$_FILES</code>
  589. </para>
  590. </listitem>
  591. <listitem>
  592. <para>
  593. <code>(boolean, domyślnie wartość false) cache_with_cookie_variables</code> :
  594. jeśli ma wartość true, buforowanie jest włączone nawet wtedy gdy są jakieś
  595. zmienne w tablicy <code>$_COOKIE</code>
  596. </para>
  597. </listitem>
  598. <listitem>
  599. <para>
  600. <code>(boolean, domyślnie wartość true) makeI_id_with_get_variables</code> :
  601. jeśli ma wartość true, identyfikator bufora będzie zależał od
  602. zawartości tablicy <code>$_GET</code>
  603. </para>
  604. </listitem>
  605. <listitem>
  606. <para>
  607. <code>(boolean, domyślnie wartość true) make_id_with_post_variables</code> :
  608. jeśli ma wartość true, identyfikator bufora będzie zależał od
  609. zawartości tablicy <code>$_POST</code>
  610. </para>
  611. </listitem>
  612. <listitem>
  613. <para>
  614. <code>(boolean, domyślnie wartość true) make_id_with_session_variables</code> :
  615. jeśli ma wartość true, identyfikator bufora będzie zależał od
  616. zawartości tablicy <code>$_SESSION</code>
  617. </para>
  618. </listitem>
  619. <listitem>
  620. <para>
  621. <code>(boolean, domyślnie wartość true) make_id_with_files_variables</code> :
  622. jeśli ma wartość true, identyfikator bufora będzie zależał od
  623. zawartości tablicy <code>$_FILES</code>
  624. </para>
  625. </listitem>
  626. <listitem>
  627. <para>
  628. <code>(boolean, domyślnie wartość true) make_id_with_cookie_variables</code> :
  629. jeśli ma wartość true, identyfikator bufora będzie zależał od
  630. zawartości tablicy <code>$_COOKIE</code>
  631. </para>
  632. </listitem>
  633. </itemizedlist>
  634. </entry>
  635. </row>
  636. <row>
  637. <entry><code>regexps</code></entry>
  638. <entry><code>array</code></entry>
  639. <entry><code>array()</code></entry>
  640. <entry>
  641. tablica asocjacyjna do ustawienia opcji tylko dla pewnych adresów REQUEST_URI,
  642. klucze są wyrażeniami regularnymi (PCRE), wartości są asocjacyjnymi tablicami
  643. ze specyficznymi opcjami do ustawienia gdy wyrażenie regularne zostanie
  644. dopasowane do $_SERVER['REQUEST_URI'] (zobacz default_options aby zobaczyć listę
  645. wszystkich dostępnych opcji) ; jeśli kilka wyrażen regularnych będzie pasowało
  646. do $_SERVER['REQUEST_URI'], zostanie użyte tylko te ostatnie
  647. </entry>
  648. </row>
  649. <row>
  650. <entry><code>memorize_headers</code></entry>
  651. <entry><code>array</code></entry>
  652. <entry><code>array()</code></entry>
  653. <entry>
  654. tablica łańcuchów znaków odpowiadająca nazwom nagłówków
  655. HTTP. Wymienione nagłówki będą przechowane wraz
  656. z danymi buforu i odtworzone gdy bufor zostanie użyty
  657. </entry>
  658. </row>
  659. </tbody>
  660. </tgroup>
  661. </table>
  662. </sect3>
  663. <sect3 id="zend.cache.frontends.page.examples">
  664. <title>Przykłady</title>
  665. <para>
  666. Użycie Zend_Cache_Frontend_Page jest naprawdę łatwe:
  667. </para>
  668. <programlisting role="php"><![CDATA[
  669. // [...] // wymagane, konfiguracja i fabryka
  670. $cache->start();
  671. // jeśli bufor jest trafiony, wynik jest wysyłany do przeglądaki a skrypt tutaj kończy działanie
  672. // reszta strony
  673. ]]>
  674. </programlisting>
  675. <para>
  676. bardziej kompleksowy przykład, który pokazuje sposób centralnego
  677. zarządzania buforowaniem w pliku ładującym (przykładowo do użycia
  678. z klasą Zend_Controller)
  679. </para>
  680. <programlisting role="php"><![CDATA[
  681. /**
  682. * Powinieneś unikać tworzenia dużej ilości kodu przed sekcją buforowania na
  683. * przykład, w celu optymalizacji, instrukcje "require_once" lub
  684. * "Zend_Loader::loadClass" powinny znajdować się za sekcją buforowania
  685. */
  686. $frontendOptions = array(
  687. 'lifetime' => 7200,
  688. 'debug_header' => true, // dla testów
  689. 'regexps' => array(
  690. // buforuj cały kontroler IndexController
  691. '^/$' => array('cache' => true),
  692. // buforuj cały kontroler IndexController
  693. '^/index/' => array('cache' => true),
  694. // nie buforuj kontrolera ArticleController...
  695. '^/article/' => array('cache' => false),
  696. // ...ale buforuj akcję "view"
  697. '^/article/view/' => array(
  698. // kontrolera ArticleController
  699. 'cache' => true,
  700. // i buforuj gdy są dostępne zmienne $_POST
  701. 'cache_with_post_variables' => true,
  702. // (ale bufor będzie zależał od tablicy $_POST)
  703. 'make_id_with_post_variables' => true,
  704. )
  705. )
  706. );
  707. $backendOptions = array(
  708. 'cache_dir' => '/tmp/'
  709. );
  710. // pobieranie obiektu Zend_Cache_Frontend_Page
  711. $cache = Zend_Cache::factory('Page',
  712. 'File',
  713. $frontendOptions,
  714. $backendOptions);
  715. $cache->start();
  716. // jeśli bufor jest trafiony, wynik jest wysyłany do przeglądaki
  717. // a skrypt tutaj kończy działanie
  718. // [...] koniec pliku uruchamiającego
  719. // te linie nie będą wykonane jeśli bufor jest trafiony
  720. ]]>
  721. </programlisting>
  722. </sect3>
  723. <sect3 id="zend.cache.frontends.page.cancel">
  724. <title>Metoda zaniechania buforowania</title>
  725. <para>
  726. Z powodu wymagań projektowych, w niektórych przypadkach (na przykład
  727. gdy używamy kodów innych niż HTTP/200), możesz potrzebować zaniechać
  728. proces buforowania. Dlatego dla tego frontendu udostępniamy metodę cancel().
  729. </para>
  730. <programlisting role="php"><![CDATA[
  731. // [...] // konfiguracja itp.
  732. $cache->start();
  733. // [...]
  734. if ($someTest) {
  735. $cache->cancel();
  736. // [...]
  737. }
  738. // [...]
  739. ]]>
  740. </programlisting>
  741. </sect3>
  742. </sect2>
  743. </sect1>