1 <?xml version="1.0" encoding="UTF-8"?>
\r
2 <!-- Reviewed: no -->
\r
3 <sect1 id="zend.cache.frontends">
\r
4 <title>Фронтэнды Zend_Cache</title>
\r
6 <sect2 id="zend.cache.frontends.core">
\r
7 <title>Zend_Cache_Core</title>
\r
8 <sect3 id="zend.cache.frontends.core.introduction">
\r
9 <title>Введение</title>
\r
11 Фронтэнд <classname>Zend_Cache_Core</classname> является особым,
\r
12 так как это ядро всего модуля. Это фронтэнд общего назначения и
\r
13 он расширяется другими классами.
\r
17 Все фронтэнды наследуют от класса
\r
18 <classname>Zend_Cache_Core</classname>, поэтому его методы и опции,
\r
19 описанные ниже, должны быть доступны в других фронтэндах и
\r
20 не будут описываться далее.
\r
24 <sect3 id="zend.cache.frontends.core.options">
\r
25 <title>Доступные опции</title>
\r
27 Эти опции передаются фабричному методу, как было показано в
\r
28 предыдущих примерах.
\r
30 <table id="zend.cache.frontends.core.options.table">
\r
31 <title>Опции Zend_Cache_Core</title>
\r
35 <entry>Опция</entry>
\r
36 <entry>Тип данных</entry>
\r
37 <entry>Значение по умолчанию</entry>
\r
38 <entry>Описание</entry>
\r
43 <entry><emphasis>caching</emphasis></entry>
\r
44 <entry><type>Boolean</type></entry>
\r
45 <entry><constant>TRUE</constant></entry>
\r
47 Включает/отключает кэширование (может быть
\r
48 очень полезным при отладке кэшируемых
\r
53 <entry><emphasis>cache_id_prefix</emphasis></entry>
\r
54 <entry><type>String</type></entry>
\r
55 <entry><constant>NULL</constant></entry>
\r
57 Префикс для всех идентификаторов кэша. Если
\r
58 установлен в <constant>NULL</constant>, то префикс не
\r
59 будет использоваться. Префикс идентификатора
\r
60 кэша в первую очередь создает пространство
\r
61 имен в кэше, что позволяет нескольким
\r
62 приложениям или веб-сайтам использовать общий
\r
63 кэш. Любое приложение или веб-сайт может
\r
64 использовать свой префикс идентификаторов
\r
65 кэша, благодаря чему отдельные идентификаторы
\r
66 кеша могут использоваться многократно.
\r
70 <entry><emphasis>lifetime</emphasis></entry>
\r
71 <entry><type>Integer</type></entry>
\r
74 Время жизни кэша (в секундах), если установлен в
\r
75 <constant>NULL</constant>, то кэш имеет бесконечное
\r
80 <entry><emphasis>logging</emphasis></entry>
\r
81 <entry><type>Boolean</type></entry>
\r
82 <entry><constant>FALSE</constant></entry>
\r
84 Если установлен в <constant>TRUE</constant>, то
\r
85 включается логирование через
\r
86 <classname>Zend_Log</classname> (но система будет
\r
87 работать медленнее).
\r
91 <entry><emphasis>write_сontrol</emphasis></entry>
\r
92 <entry><type>Boolean</type></entry>
\r
93 <entry><constant>TRUE</constant></entry>
\r
95 Включает/отключает контроль записи (кэш
\r
96 читается сразу после записи для выявления
\r
97 поврежденных записей), включение write_control
\r
98 немного замедлит запись кэша, но не чтение. Этот
\r
99 контроль поможет выявить некоторые поврежденные
\r
100 файлы кэша, но не является совершенным.
\r
104 <entry><emphasis>automatic_serialization</emphasis></entry>
\r
105 <entry><type>Boolean</type></entry>
\r
106 <entry><constant>FALSE</constant></entry>
\r
108 Включает/отключает автоматическую
\r
109 сериализацию, она может использоваться для
\r
110 сохранения напрямую данных, которые не являются
\r
111 строками (но это будет медленнее).
\r
115 <entry><emphasis>automatic_cleaning_factor</emphasis></entry>
\r
116 <entry><type>Integer</type></entry>
\r
119 Отключает/настраивает процесс автоматической
\r
120 очистки (сборки мусора):
\r
121 0 означает, что автоматическая
\r
122 чистка кэша не производится,
\r
123 1 означает систематическую очистку
\r
125 x (integer) > 1 означает, что
\r
126 автоматическая чистка производится случайным
\r
127 образом 1 раз на x записей кэша.
\r
131 <entry><emphasis>ignore_user_abort</emphasis></entry>
\r
132 <entry><type>Boolean</type></entry>
\r
133 <entry><constant>FALSE</constant></entry>
\r
135 Если установлен в true, то ядро будет
\r
136 устанавливать <acronym>PHP</acronym>-флаг
\r
137 ignore_user_abort в методе
\r
138 save() во избежание порчи кэша в некоторых
\r
147 <sect3 id="zend.cache.core.examples">
\r
148 <title>Примеры</title>
\r
150 Пример был дан в самом начале данного раздела руководства.
\r
153 Если вы храните в кэше только строки (с опцией
\r
154 <emphasis>automatic_serialization</emphasis> возможно хранить некоторые
\r
155 булевы значения), вы можете использовать более компактную
\r
156 конструкцию, как показано ниже:
\r
158 <programlisting language="php"><![CDATA[
\r
159 // предполагается, что переменная $cache уже установлена
\r
161 $id = 'myBigLoop'; // идентификатор того, что мы хотим закэшировать
\r
163 if (!($data = $cache->load($id))) {
\r
167 for ($i = 0; $i < 10000; $i++) {
\r
168 $data = $data . $i;
\r
171 $cache->save($data);
\r
175 // [...] делаем что-либо с данными (отображение, передача и т.д.)
\r
176 ]]></programlisting>
\r
178 Если вы хотите закэшировать несколько блоков или экземпляров
\r
179 данных, то принцип будет тот же:
\r
181 <programlisting language="php"><![CDATA[
\r
182 // убедитесь, что используете уникальные идентификаторы:
\r
187 if (!($data = $cache->load($id1))) {
\r
191 for ($i=0;$i<10000;$i++) {
\r
192 $data = $data . $i;
\r
195 $cache->save($data);
\r
200 // эта часть не кэшируется
\r
201 echo('НЕ КЭШИРУЕТСЯ! ');
\r
204 if (!($data = $cache->load($id2))) {
\r
208 for ($i=0;$i<10000;$i++) {
\r
209 $data = $data . '!';
\r
212 $cache->save($data);
\r
215 echo($data);]]></programlisting>
\r
217 Если вы хотите кэшировать специальные значения (булево
\r
218 значение через опцию "automatic_serialization") или пустую
\r
219 строку, то компактная форма, приведенная выше, уже не
\r
220 подходит. Проверка на наличие записи кэша должна производиться
\r
221 созданным для этого методом.
\r
223 <programlisting language="php"><![CDATA[
\r
224 // Копмпактная форма. Не подходит, если могут кэшироваться
\r
225 // пустые строки и значения булевого типа
\r
226 if (!($data = $cache->load($id))) {
\r
230 // [...] получаем данные и присваиваем их переменной $data
\r
232 $cache->save($data);
\r
236 // делаем что-либо с данными
\r
240 // Полная форма, будет работать в любом случае
\r
241 if (!($cache->test($id))) {
\r
245 // [...] получаем данные и присваиваем их переменной $data
\r
247 $cache->save($data);
\r
253 $data = $cache->load($id);
\r
257 // делаем что-либо с данными
\r
258 ]]></programlisting>
\r
262 <sect2 id="zend.cache.frontends.output">
\r
263 <title>Zend_Cache_Frontend_Output</title>
\r
264 <sect3 id="zend.cache.frontends.output.introduction">
\r
265 <title>Введение</title>
\r
267 <classname>Zend_Cache_Frontend_Output</classname> является фронтэндом,
\r
268 собирающим выходные данные. Он использует буферизацию вывода
\r
269 (output buffering) в <acronym>PHP</acronym> для сохранения
\r
270 всего, что выводится между его методами
\r
271 <methodname>start()</methodname> и <methodname>end()</methodname>.
\r
274 <sect3 id="zend.cache.frontends.output.options">
\r
275 <title>Доступные опции</title>
\r
277 Этот фронтэнд не имеет каких-либо специальных опций, отличных
\r
278 от опций <classname>Zend_Cache_Core</classname>.
\r
282 <sect3 id="zend.cache.frontends.output.examples">
\r
283 <title>Примеры</title>
\r
285 Пример был дан в самом начале данного руководства. Здесь
\r
286 он с небольшими изменениями:
\r
288 <programlisting language="php"><![CDATA[
\r
289 // если имеет место промах кэша,
\r
290 // то начинается буферизация вывода
\r
291 if (!($cache->start('mypage'))) {
\r
293 // все выводится, как обычно
\r
294 echo 'Hello world! ';
\r
295 echo 'This is cached ('.time().') ';
\r
297 $cache->end(); // завершение буферизации вывода
\r
301 echo 'This is never cached ('.time().').';
\r
302 ]]></programlisting>
\r
304 Используя эту форму, довольно легко установить кэширование
\r
305 вывода в уже работающем проекте с незначительным рефакторингом
\r
306 кода или совсем без него.
\r
311 <sect2 id="zend.cache.frontends.function">
\r
312 <title>Zend_Cache_Frontend_Function</title>
\r
313 <sect3 id="zend.cache.frontends.function.introduction">
\r
314 <title>Введение</title>
\r
316 <classname>Zend_Cache_Frontend_Function</classname> сохраняет в кэш
\r
317 результаты вызова функции. Он имеет единственный основной метод
\r
318 <methodname>call()</methodname>, который принимает имя функции и параметры
\r
319 вызова в виде массива.
\r
322 <sect3 id="zend.cache.frontends.function.options">
\r
323 <title>Доступные опции</title>
\r
324 <table id="zend.cache.frontends.function.options.table">
\r
325 <title>Опции Zend_Cache_Frontend_Function</title>
\r
329 <entry>Опция</entry>
\r
330 <entry>Тип данных</entry>
\r
331 <entry>Значение по умолчанию</entry>
\r
332 <entry>Описание</entry>
\r
337 <entry><emphasis>cache_by_default</emphasis></entry>
\r
338 <entry><type>Boolean</type></entry>
\r
339 <entry><constant>TRUE</constant></entry>
\r
341 Если равен true, то вызовы функции по
\r
342 умолчанию кэшируются.
\r
346 <entry><emphasis>cached_functions</emphasis></entry>
\r
347 <entry><type>Array</type></entry>
\r
350 Имена функций, которые всегда кэшируются.
\r
354 <entry><emphasis>non_cached_functions</emphasis></entry>
\r
355 <entry><type>Array</type></entry>
\r
358 Имена функций, которые никогда не должны
\r
367 <sect3 id="zend.cache.frontends.function.examples">
\r
368 <title>Примеры</title>
\r
370 Функция <methodname>call()</methodname> используется так же, как и
\r
371 <methodname>call_user_func_array()</methodname> в
\r
372 <acronym>PHP</acronym>:
\r
374 <programlisting language="php"><![CDATA[
\r
375 $cache->call('veryExpensiveFunc', $params);
\r
377 // $params является массивом
\r
378 // Например, если нужно вызвать с кэшированием
\r
379 // veryExpensiveFunc(1, 'foo', 'bar'),
\r
380 // то вы должны использовать
\r
381 // $cache->call('veryExpensiveFunc', array(1, 'foo', 'bar'))
\r
382 ]]></programlisting>
\r
384 <classname>Zend_Cache_Frontend_Function</classname> достаточно
\r
385 интеллектуален, чтобы кэшировать как возвращаемое функцией
\r
386 значение, так и данные, выводимые внутри нее.
\r
390 Вы можете передавать любые как встроенные, так и
\r
391 определенные пользователем функции, за исключением
\r
392 <methodname>array()</methodname>,
\r
393 <methodname>echo()</methodname>, <methodname>empty()</methodname>,
\r
394 <methodname>eval()</methodname>, <methodname>exit()</methodname>,
\r
395 <methodname>isset()</methodname>, <methodname>list()</methodname>,
\r
396 <methodname>print()</methodname> и <methodname>unset()</methodname>.
\r
402 <sect2 id="zend.cache.frontends.class">
\r
403 <title>Zend_Cache_Frontend_Class</title>
\r
404 <sect3 id="zend.cache.frontends.class.introduction">
\r
405 <title>Введение</title>
\r
407 <classname>Zend_Cache_Frontend_Class</classname> отличается от
\r
408 <classname>Zend_Cache_Frontend_Function</classname> тем, что позволяет
\r
409 кэшировать объекты и статические вызовы методов.
\r
412 <sect3 id="zend.cache.frontends.class.options">
\r
413 <title>Доступные опции</title>
\r
414 <table id="zend.cache.frontends.class.options.table">
\r
415 <title>Опции Zend_Cache_Frontend_Class</title>
\r
419 <entry>Опция</entry>
\r
420 <entry>Тип данных</entry>
\r
421 <entry>Значение по умолчанию</entry>
\r
422 <entry>Описание</entry>
\r
427 <entry><emphasis>cached_entity</emphasis> (required)</entry>
\r
428 <entry><type>Mixed</type></entry>
\r
431 Если установлен как имя класса, то будет
\r
432 кэшироваться абстрактный класс и будут
\r
433 использоваться только статические вызовы; если
\r
434 установлен как объект,
\r
435 то будут кэшироваться методы объекта.
\r
439 <entry><emphasis>cache_by_default</emphasis></entry>
\r
440 <entry><type>Boolean</type></entry>
\r
441 <entry><constant>TRUE</constant></entry>
\r
443 Если установлен в <constant>TRUE</constant>, то вызовы
\r
444 будут кэшироваться по умолчанию.
\r
448 <entry><emphasis>cached_methods</emphasis></entry>
\r
449 <entry><type>Array</type></entry>
\r
452 Имена методов, которые должны всегда
\r
457 <entry><emphasis>non_cached_methods</emphasis></entry>
\r
458 <entry><type>Array</type></entry>
\r
461 Имена методов, которые никогда не должны
\r
470 <sect3 id="zend.cache.frontends.class.examples">
\r
471 <title>Примеры</title>
\r
473 Кэширование статических вызовов:
\r
475 <programlisting language="php"><![CDATA[<?php
\r
478 // Статический метод
\r
479 public static function foobar($param1, $param2) {
\r
480 echo "foobar_output($param1, $param2)";
\r
481 return "foobar_return($param1, $param2)";
\r
487 $frontendOptions = array(
\r
488 'cached_entity' => 'Test' // имя класса
\r
492 // Кэшируемый вызов
\r
493 $result = $cache->foobar('1', '2');
\r
494 ]]></programlisting>
\r
496 Кэширование обычных вызовов методов:
\r
498 <programlisting language="php"><![CDATA[
\r
501 private $_string = 'hello !';
\r
503 public function foobar2($param1, $param2) {
\r
504 echo($this->_string);
\r
505 echo "foobar2_output($param1, $param2)";
\r
506 return "foobar2_return($param1, $param2)";
\r
512 $frontendOptions = array(
\r
513 'cached_entity' => new Test() // экземпляр класса
\r
517 // Кэшируемый вызов
\r
518 $result = $cache->foobar2('1', '2');
\r
519 ]]></programlisting>
\r
523 <sect2 id="zend.cache.frontends.file">
\r
524 <title>Zend_Cache_Frontend_File</title>
\r
525 <sect3 id="zend.cache.frontends.file.introduction">
\r
526 <title>Введение</title>
\r
528 <classname>Zend_Cache_Frontend_File</classname> является фронтэндом,
\r
529 который управляется временем изменения "ведущего файла".
\r
530 Он очень полезен для кэширования конфигураций или шаблонов.
\r
531 Можно использовать несколько ведущих файлов.
\r
534 Например, у вас есть конфигурационный файл
\r
535 <acronym>XML</acronym>. Он парсится
\r
536 функцией, которая возвращает объект конфигурации
\r
537 (наподобие <classname>Zend_Config</classname>). С помощью
\r
538 <classname>Zend_Cache_Frontend_File</classname> вы можете сохранять объект
\r
539 конфигурации в кэш, чтобы избежать повторного парсинга
\r
540 конфигурационного файла <acronym>XML</acronym>. Время жизни
\r
541 кэша будет зависеть от ведущего файла - если конфигурационный
\r
542 файл <acronym>XML</acronym> изменится, то кэш сразу становится
\r
546 <sect3 id="zend.cache.frontends.file.options">
\r
547 <title>Доступные опции</title>
\r
548 <table id="zend.cache.frontends.file.options.table">
\r
549 <title>Опции Zend_Cache_Frontend_File</title>
\r
553 <entry>Опция</entry>
\r
554 <entry>Тип данных</entry>
\r
555 <entry>Значение по умолчанию</entry>
\r
556 <entry>Описание</entry>
\r
561 <entry><emphasis>master_file</emphasis>
\r
562 (не рекомендуется к использованию)</entry>
\r
563 <entry><type>String</type></entry>
\r
566 Полные путь и имя ведущего файла
\r
570 <entry><emphasis>master_files</emphasis></entry>
\r
571 <entry><type>Array</type></entry>
\r
572 <entry><methodname>array()</methodname></entry>
\r
574 Массив полных путей к ведущим файлам
\r
578 <entry><emphasis>master_files_mode</emphasis></entry>
\r
579 <entry><type>String</type></entry>
\r
580 <entry><constant>Zend_Cache_Frontend_File::MODE_OR</constant></entry>
\r
582 <constant>Zend_Cache_Frontend_File::MODE_AND</constant> или <constant>Zend_Cache_Frontend_File::MODE_OR</constant>;
\r
583 если <constant>MODE_AND</constant>, то все ведущие файлы должны быть изменены для того, чтобы кэш стал недействительным
\r
584 если <constant>MODE_OR</constant>, то достаточно изменения одного ведущего файла, чтобы кэш стал недействительным
\r
588 <entry><emphasis>ignore_missing_master_files</emphasis></entry>
\r
589 <entry><type>Boolean</type></entry>
\r
590 <entry><constant>FALSE</constant></entry>
\r
592 если равен <constant>TRUE</constant>, то отсутствующие
\r
593 ведущие файлы игнорируются, иначе бросается
\r
601 <sect3 id="zend.cache.frontends.file.examples">
\r
602 <title>Примеры</title>
\r
604 Этот фронтэнд используется так же, как и
\r
605 <classname>Zend_Cache_Core</classname>. Специальные примеры не нужны,
\r
606 единственное, что надо сделать — это указать
\r
607 <emphasis>masterFile</emphasis> при использовании фабрики.
\r
612 <sect2 id="zend.cache.frontends.page">
\r
613 <title>Zend_Cache_Frontend_Page</title>
\r
614 <sect3 id="zend.cache.frontends.page.introduction">
\r
615 <title>Введение</title>
\r
617 <classname>Zend_Cache_Frontend_Page</classname> похож на
\r
618 <classname>Zend_Cache_Frontend_Output</classname>,
\r
619 но предназначена для кэширования целых страниц.
\r
620 <classname>Zend_Cache_Frontend_Page</classname>
\r
621 нельзя использовать для кэширования отдельных блоков.
\r
624 Идентификатор кэша вычисляется автоматически
\r
625 с использованием <varname>$_SERVER['REQUEST_URI']</varname> и
\r
626 (в зависимости от опций) <varname>$_GET</varname>,
\r
627 <varname>$_POST</varname>, <varname>$_SESSION</varname>,
\r
628 <varname>$_COOKIE</varname>, <varname>$_FILES</varname>.
\r
629 Кроме этого, вы используете только один метод для вызова
\r
630 (<methodname>start()</methodname>), потому что
\r
631 <methodname>end()</methodname> вызывается
\r
632 автоматически, когда страница заканчивается.
\r
635 На данный момент мы планируем добавить условную систему
\r
636 <acronym>HTTP</acronym> для
\r
637 сохранения пропускной способности (система будет отправлять
\r
638 <acronym>HTTP</acronym> 304 Not Modified, если есть попадание
\r
639 в кэш и броузер уже имеет правильную версию страницы).
\r
642 <sect3 id="zend.cache.frontends.page.options">
\r
643 <title>Доступные опции</title>
\r
644 <table id="zend.cache.frontends.page.options.table">
\r
645 <title>Опции Zend_Cache_Frontend_Page</title>
\r
649 <entry>Опция</entry>
\r
650 <entry>Тип данных</entry>
\r
651 <entry>Значение по умолчанию</entry>
\r
652 <entry>Описание</entry>
\r
657 <entry><emphasis>http_conditional</emphasis></entry>
\r
658 <entry><type>Boolean</type></entry>
\r
659 <entry><constant>FALSE</constant></entry>
\r
661 Использовать условную систему HTTP (не
\r
662 реализовано на данный момент)
\r
666 <entry><emphasis>debug_header</emphasis></entry>
\r
667 <entry><type>Boolean</type></entry>
\r
668 <entry><constant>FALSE</constant></entry>
\r
670 Если установлен в <constant>TRUE</constant>, то
\r
671 отладочный текст вставляется перед каждой
\r
672 кэшируемой страницей.
\r
676 <entry><emphasis>default_options</emphasis></entry>
\r
677 <entry><type>Array</type></entry>
\r
678 <entry><methodname>array(...смотрите далее...)</methodname></entry>
\r
680 Ассоциативный массив опций, включаемых по
\r
685 (<emphasis>boolean, true</emphasis> по
\r
686 умолчанию) <emphasis>cache</emphasis>:
\r
687 если <constant>TRUE</constant>, то
\r
688 кэширование включено
\r
693 (<emphasis>boolean, false</emphasis> по
\r
695 <emphasis>cache_with_get_variables</emphasis>:
\r
696 если <constant>TRUE</constant>, кэширование
\r
697 включено, даже если в массиве
\r
698 <varname>$_GET</varname> есть переменные
\r
703 (<emphasis>boolean, false</emphasis> по
\r
705 <emphasis>cache_with_post_variables</emphasis>:
\r
706 если <constant>TRUE</constant>, кэширование
\r
707 включено, даже если в массиве
\r
708 <varname>$_POST</varname> есть переменные
\r
713 (<emphasis>boolean, false</emphasis> по
\r
715 <emphasis>cache_with_session_variables</emphasis>:
\r
716 если <constant>TRUE</constant>, кэширование
\r
717 включено, даже если в массиве
\r
718 <varname>$_SESSION</varname> есть
\r
724 (<emphasis>boolean, false</emphasis> по
\r
726 <emphasis>cache_with_files_variables</emphasis>:
\r
727 если <constant>TRUE</constant>, кэширование
\r
728 включено, даже если в массиве
\r
729 <varname>$_FILES</varname> есть переменные
\r
734 (<emphasis>boolean, false</emphasis> по
\r
736 <emphasis>cache_with_cookie_variables</emphasis>:
\r
737 если <constant>TRUE</constant>, кэширование
\r
738 включено, даже если в массиве
\r
739 <varname>$_COOKIE</varname> есть
\r
745 (<emphasis>boolean, true</emphasis> по
\r
747 <emphasis>make_id_with_get_variables</emphasis>:
\r
748 если <constant>TRUE</constant>, то
\r
749 идентификатор кэша будет зависеть
\r
750 от содержимого массива
\r
751 <varname>$_GET</varname>
\r
756 (<emphasis>boolean, true</emphasis> по
\r
758 <emphasis>make_id_with_post_variables</emphasis>:
\r
759 если <constant>TRUE</constant>, то
\r
760 идентификатор кэша будет зависеть
\r
761 от содержимого массива
\r
762 <varname>$_POST</varname>
\r
767 (<emphasis>boolean, true</emphasis> по
\r
769 <emphasis>make_id_with_session_variables</emphasis>:
\r
770 если <constant>TRUE</constant>, то
\r
771 идентификатор кэша будет зависеть
\r
772 от содержимого массива
\r
773 <varname>$_SESSION</varname>
\r
778 (<emphasis>boolean, true</emphasis> по
\r
780 <emphasis>make_id_with_files_variables</emphasis>:
\r
781 если <constant>TRUE</constant>, то
\r
782 идентификатор кэша будет зависеть от
\r
783 содержимого массива
\r
784 <varname>$_FILES</varname>
\r
789 (<emphasis>boolean, true</emphasis> по
\r
791 <emphasis>make_id_with_cookie_variables</emphasis>:
\r
792 если <constant>TRUE</constant>, то
\r
793 идентификатор кэша будет зависеть от
\r
794 содержимого массива
\r
795 <varname>$_COOKIE</varname>
\r
800 (<emphasis>int, false</emphasis> по
\r
802 <emphasis>specific_lifetime</emphasis>:
\r
803 если не <constant>FALSE</constant>,
\r
804 то значение этой опции,
\r
805 обозначающей время жизни кэша,
\r
806 будет использоваться для выбранного
\r
807 регулярного выражения
\r
812 (<emphasis>array, array()</emphasis> по
\r
814 <emphasis>tags</emphasis>:
\r
815 теги для записи в кэше
\r
820 (<emphasis>int, null</emphasis> по
\r
822 <emphasis>priority</emphasis>:
\r
823 приоритет. Действует только
\r
824 если выбранный бэкэнд поддерживает
\r
832 <entry><emphasis>regexps</emphasis></entry>
\r
833 <entry><type>Array</type></entry>
\r
834 <entry><methodname>array()</methodname></entry>
\r
836 Ассоциативный массив для установки опций
\r
837 только для некоторых
\r
838 <acronym>REQUEST_URI</acronym>. Ключами
\r
839 этого массива являются регулярные выражения
\r
840 (<acronym>PCRE</acronym>), значениями —
\r
841 ассоциативные массивы со
\r
842 специальными опциями, которые устанавливаются,
\r
843 если <varname>$_SERVER['REQUEST_URI']</varname>
\r
844 соответствует регулярному выражению
\r
845 (см. default_options в этом списке доступных
\r
846 опций). Если <varname>$_SERVER['REQUEST_URI']</varname>
\r
847 соответствует нескольким регулярным
\r
848 выражениям, то используется только последнее
\r
853 <entry><emphasis>memorize_headers</emphasis></entry>
\r
854 <entry><type>Array</type></entry>
\r
855 <entry><methodname>array()</methodname></entry>
\r
857 Массив строк с именами
\r
858 <acronym>HTTP</acronym>-заголовков.
\r
859 Перечисленные заголовки будут сохранены в
\r
860 кэше и будут замещены при попадании в кэш.
\r
867 <sect3 id="zend.cache.frontends.page.examples">
\r
868 <title>Примеры</title>
\r
870 Использование <classname>Zend_Cache_Frontend_Page</classname> довольно
\r
873 <programlisting language="php"><![CDATA[
\r
877 // если есть попадание в кэш, то результат отправляется броузеру
\r
878 // и выполнение скрипта на этом прекращается
\r
880 // остальная часть страницы ...
\r
881 ]]></programlisting>
\r
883 Более сложный пример, показывающий способ создания
\r
884 централизованного управления кэшированием в загрузочном файле
\r
885 (например, для использования с <classname>Zend_Controller</classname>).
\r
887 <programlisting language="php"><![CDATA[
\r
889 * Вы должны избегать слишком большого количества строк кода перед этим участком
\r
890 * кэша. Например, для наибольшей производительности "require_once" или
\r
891 * "Zend_Loader::loadClass" должны находиться после кэшируемого участка
\r
894 $frontendOptions = array(
\r
895 'lifetime' => 7200,
\r
896 'debug_header' => true, // для отладки
\r
897 'regexps' => array(
\r
898 // кэширование всего IndexController
\r
899 '^/$' => array('cache' => true),
\r
901 // кэширование всего IndexController
\r
902 '^/index/' => array('cache' => true),
\r
904 // не кэшируем ArticleController...
\r
905 '^/article/' => array('cache' => false),
\r
907 // ...но кэшируем действие "view" контроллера ArticleController
\r
908 '^/article/view/' => array(
\r
911 // кэшируем, даже если есть переменные $_POST
\r
912 'cache_with_post_variables' => true,
\r
914 // но кэш будет зависеть от массива $_POST
\r
915 'make_id_with_post_variables' => true,
\r
920 $backendOptions = array(
\r
921 'cache_dir' => '/tmp/'
\r
924 // получение объекта Zend_Cache_Frontend_Page
\r
925 $cache = Zend_Cache::factory('Page',
\r
931 // если есть попадание в кэш, результат отправляется броузеру,
\r
932 // и выполнение скрипта на этом завершается
\r
934 // [...] конец загрузочного файла
\r
935 // (этот код не исполняется, если есть попадание в кэш)
\r
936 ]]></programlisting>
\r
938 <sect3 id="zend.cache.frontends.page.cancel">
\r
939 <title>Отмена кэширования</title>
\r
941 В некоторых случаях может потребоваться отменить текущий
\r
942 процесс кэширования - например, если используется код
\r
943 возврата, отличный от <acronym>HTTP</acronym> 200. Поэтому
\r
944 мы добавили метод <methodname>cancel()</methodname>:
\r
946 <programlisting language="php"><![CDATA[
\r
959 ]]></programlisting>
\r
964 vim:se ts=4 sw=4 et:
\r