Есть три ключевых понятия в Zend_Cache. Первое — уникальный
идентификатор (строка), который служит для идентификации записей кэша.
Второе — это директива 'lifetime'
, которую вы могли видеть
в предыдущих примерах; она определяет, в течение какого времени кэшируемый
ресурс считается "свежим". Третье понятие — условное исполнение, используемое
для того, чтобы части вашего кода могли быть пропущены целиком, этим повышается
производительность. Основной метод фронтэнда
(например, Zend_Cache_Core::get()
) всегда спроектирован так, чтобы
должен возвращать false
при промахе кэша, если это
имеет смысл для данного фронэнда. Это дает конечным
пользователям возможность включать части кода, которые нужно
кэшировать (и затем пропускать) в операторы if(){ ... }
,
где условием является сам метод Zend_Cache. Но в конце этих блоков
вы должны сохранять то, что было сгенерировано (например, методом
Zend_Cache_Core::save()
).
Замечание | |
---|---|
Для некоторых фронтэндов включение условного исполнения в
код не нужно, так как вся логика уже реализована в них
(например, |
Замечание | |
---|---|
"Попадание в кэш" — термин для того состояния, когда запись кэша найдена, является корректной и "свежей" (в других словах, для которой не закончился срок действия). Иначе имеет место "промах кэша". Когда происходит "промах кэша", вы должны сгенерировать свои данные, которые помещаются в кэш. С другой стороны, если есть "попадание", то бэкэнд автоматически извлечет запись из кэша. |
Корректным способом создания рабочего экземпляра
фронтэнда 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
содержит инстанцированный, как показано в примере, фронтэнд,
и что вы понимаете, как передавать параметры выбранному вами
бэкэнду.
Замечание | |
---|---|
Всегда используйте |
Теги являются средством категоризации записей кэша. Когда вы производите
сохранение в кэш методом save()
, то можете установить массив
тегов к данной записи. После этого вы можете удалить все записи
кэша, помеченные данным тегом (тегами).
<?php $cache->save($huge_data, 'myUniqueID', array('tagA', 'tagB', 'tagC')); ?>
Замечание | |
---|---|
Метод |
Для того, чтобы удалить или сделать недействительной запись с определенным
идентификатором, вы можете использовать метод 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
(удалить не помеченные тегом).
Последние два, как ясно из названий, передаются вместе с массивом
тегов.