Programmer's Reference Guide
| Введение |
Теория кэширования
Есть три ключевых понятия в Zend_Cache. Первое — уникальный
идентификатор (строка), который служит для идентификации записей кэша.
Второе — это директива 'lifetime', которую вы могли видеть
в предыдущих примерах; она определяет, в течение какого времени
кэшируемый ресурс считается "свежим". Третье понятие — условное
исполнение, используемое для того, чтобы части вашего кода могли быть
пропущены целиком, этим повышается производительность. Основной метод
фронтэнда (например, Zend_Cache_Core::get()) всегда
спроектирован так, чтобы возвращать false при промахе кэша,
если это имеет смысл для данного фронэнда. Это дает конечным
пользователям возможность включать части кода, которые нужно
кэшировать (и затем пропускать) в операторы if(){ ... },
где условием является сам метод Zend_Cache. Но в конце этих блоков
вы должны сохранять то, что было сгенерировано (например, методом
Zend_Cache_Core::save()).
Замечание: Для некоторых фронтэндов включение условного исполнения в код не нужно, так как вся логика уже реализована в них (например,
Function).
Замечание: "Попадание в кэш" — термин для определения того состояния, когда запись кэша найдена, является корректной и "свежей" (другими словами, для которой не закончился срок действия). Иначе имеет место "промах кэша". Когда происходит "промах кэша", вы должны сгенерировать свои данные, которые помещаются в кэш. С другой стороны, если есть "попадание", то бэкэнд автоматически извлечет запись из кэша.
Фабричный метод Zend_Cache
Корректным способом создания рабочего экземпляра
фронтэнда Zend_Cache является код показанный в
следующем примере:
<?php
# Загружаем фабрику Zend_Cache
require 'Zend/Cache.php';
# Выбираем бэкэнд (например, 'File' или 'Sqlite'...)
$backendName = '[...]';
# Выбираем фронтэнд (например, 'Core', 'Output', 'Page'...)
$frontendName = '[...]';
# Устанавливаем массив опций для выбранного фронтэнда
$frontendOptions = array([...]);
# Устанавливаем массив опций для выбранного бэкэнда
$backendOptions = array([...]);
# Создаем экземпляр
# (два последних аргумента являются необязательными)
$cache = Zend_Cache::factory($frontendName, $backendName, $frontendOptions, $backendOptions);
В последующих примерах мы предполагаем, что переменная
$cache содержит инстанцированный, как показано в
примере, фронтэнд, и что вы понимаете, как передавать параметры
выбранному вами бэкэнду.
Замечание: Всегда используйте
Zend_Cache::factory()для получения экземпляров фронтэнда. Непосредственно созданные экземпляры фронтэндов и бэкэндов будут работать не так, как ожидается.
Добавление тегов к записям
Теги являются средством категоризации записей кэша. Когда вы
производите сохранение в кэш методом save(), то можете
установить массив тегов к данной записи. После этого вы можете
удалить все записи кэша, помеченные данным тегом (тегами).
<?php
$cache->save($huge_data, 'myUniqueID', array('tagA', 'tagB', 'tagC'));
Замечание: Метод
save()принимает также необязательный четвертый параметр:$specificLifetime. Если он не равенfalse, то устанавливается время жизни текущей записи кэша.
Очистка кэша
Для того, чтобы удалить или сделать недействительной запись с
определенным идентификатором, вы можете использовать метод
remove():
<?php
$cache->remove('idToRemove');
Для того, чтобы одновременно удалить или сделать
недействительными несколько записей кэша, вы можете использовать
метод clean(). Например, чтобы удалить все записи кэша:
<?php
// удаление всех записей
$cache->clean(Zend_Cache::CLEANING_MODE_ALL);
// удаление только устаревших записей
$cache->clean(Zend_Cache::CLEANING_MODE_OLD);
Если вы хотите удалить записи кэша, помеченные тегами 'tagA' и 'tagC':
<?php
$cache->clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array('tagA', 'tagC'));
Доступные режимы очищения: CLEANING_MODE_ALL (удалить
все), CLEANING_MODE_OLD (удалить устаревшие),
CLEANING_MODE_MATCHING_TAG (удалить помеченные тегом)
и CLEANING_MODE_NOT_MATCHING_TAG (удалить не помеченные
тегом). Последние два, как ясно из названия, передаются вместе с
массивом тегов.
| Введение |
