Zend_Cache-Frontends.xml 38 KB

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