10.2 Cache
- 10.2.1 Обзор
- 10.2.2 Конфигурирование
- 10.2.3 Использование
10.2.1 Обзор
Пакет cache предназначен для кеширования данных.
10.2.2 Конфигурирование
Работа с пакетом начинается с процесса его конфигурирования. В конфигурационном файле приложения вы можете определить новые конфигурации для cache, которые будут определять тип хранилища, время жизни данных и специфические для хранилищ свойства (путь хранения, префикс, итд).
Существует набор конфигураций по умолчанию:
| Название | Хранилище | Опции | Описание |
|---|---|---|---|
| fast | file |
'params' => array( 'path' => systemConfig::$pathToTemp . DIRECTORY_SEPARATOR . 'cache', 'prefix' => 'fast_', 'expire' => 180) |
Предназначен для хранения часто изменяющихся данных, которые по истечении очень короткого срока времени (180 секунд по умолчанию) должны будут устареть и заменены на свежие данные. Данные хранятся в поддиректории cache, временной директории проекта.
|
| session | session |
'params' => array('expire' => 1800) |
Предназначен для хранения данных, имеющих свою актуальность только в пределах пользовательской сессии. Стоит помнить, что данные, в этом случае, будут независимы для каждой из сессий и из одной сессии нельзя будет получить данные другой. |
| long | file |
'params' => array( 'path' => systemConfig::$pathToTemp . DIRECTORY_SEPARATOR . 'cache', 'prefix' => 'long_', 'expire' => 86400) |
Конфигурация аналогичная конфигурации fast, но предназначены наоборот - для хранения редко изменяющихся данных. Время хранения по умолчанию - сутки.
|
| memory | memory | Предназначен для хранения данных, имеющих свою актуальность только в пределах вызова скрипта. Данные хранятся в оперативной памяти и уничтожаются после завершения выполнения скрипта. | |
| default |
Конфигурация, которая будет использована в случае, если при получении объекта кэша не была указана любая из существующих конфигураций. По умолчанию является синонимом на конфигурацию fast.
|
В дополнение к этим конфигурациям вы можете добавить в своём приложении свои. Для этого в массив systemConfig::$cache просто необходимо добавить описание новой конфигурации. Ключ массива с конфигурацией - будет служить её именем.
Например, для добавления конфигурации кэша с именем myMemcacheConfig, которая бы хранила данные в memcache-хранилище нужно добавить следующие строки:
systemConfig::$cache['myMemcacheConfig'] = array( 'backend' => 'memcache' );
Если вам нужно изменить параметры стандартных конфигураций, то просто переопределите соответствующие ключи массива systemConfig::$cache.
Например, чтобы кэш fast начал работать с memcache вместо файлов, в конфигурационном файле нужно прописать:
systemConfig::$cache['fast'] = array( 'backend' => 'memcache' );
10.2.3 Использование
Работа с пакетом cache происходит единообразно для всех типов хранилищ и всех конфигураций. Для начала работы необходимо получить объект с нужной конфигурацией из toolkit'а:
$cache = $this->toolkit->getCache('fast');
В результате будет возвращён объект типа cache, реализующий интерфейс:
| Метод | Аргументы | Возвращаемое значение | Описание |
|---|---|---|---|
| get |
|
Boolean:
|
Этот метод используется для получения значений, сохранённых в кэше.
if ($cache->get('key', $value)) { echo 'Найденное значение: ' . $value; } else { echo 'Значение не найдено'; } |
| set |
|
Mixed: возвращаемое значение зависит от используемого хранилища. Обычно - true/false.
|
Этот метод используется для сохранения значений в кэше.
$data = array(1, 'some string'); $cache->set('key', $data); $data = 'some data to cache'; $cache->set('key', $data, array('sample', 'documentation'), 60); |
| delete |
|
Mixed: возвращаемое значение зависит от используемого хранилища. Обычно - true/false.
|
Этот метод используется для удаления значений из кэша.
$cache->delete('key'); |
| clear |
|
Mixed: возвращаемое значение зависит от используемого хранилища. Обычно - true/false.
|
Этот метод используется для удаления значений из кэша по связанному с ним тегу. Если ключей, ассоциированных с указанным тегом, несколько, тогда будут удалены все вхождения.
$data = 'some data to cache'; $cache->set('key', $data, array('sample', 'documentation'), 60); $cache->clear('sample'); |
| flush | void |
Этот метод используется для очистки содержимого всего хранилища.
$cache->flush(); В зависимости от типа хранилища, могут очищаться все данные в нём (как в memcache) или только относящиеся к данной конфигурации (как в file). |