Работа с кэшем производится с учетом имени кэша, которое задается в конфигурационном файле, и ключом кэша (уникальная строка, идентифицирующая сохраненные в кэше данные).
В случае, если вы работаете с собственным контроллером, получения ключа производится через $cacheKey = strval($this);, которая строится на основании опций контроллера и внешних сигнатур, добавленных через addCacheSignature().
// Имя кэша, задается в конфигурационном файле $cacheName = 'mycache'; $cacheKey = 'уникальный-ключ'; // Чтение кэша if (Core::moduleIsActive('cache')) { $oCore_Cache = Core_Cache::instance(Core::$mainConfig['defaultCache']); $inCache = $oCore_Cache->get($cacheKey, $cacheName); if (!is_null($inCache)) { var_dump($inCache); } }
В кэш можно вносить не только строки, но и массивы, в таком случае проверка будет не на !is_null(), а is_array().
Для записи используется метод ->set(), в примере подразумевается наличие $oCore_Cache, а также переменных с ключом и названием кэша.
if (Core::moduleIsActive('cache')) { // Запись в кэш значения $value $oCore_Cache->set($cacheKey, $value, $cacheName); }
Элементы кэша можно теггировать (соответствующая опция должна быть включена в конфигурационном файле), это позволяет удалять элементы кэша не по ключу, а по тегу.
if (Core::moduleIsActive('cache')) { // Метки, по которым может быть удален ключ из кэша $aTags = array('foo', 'bar'); // Запись в кэш значения $value с указанием уникальных меток $oCore_Cache->set($cacheKey, $value, $cacheName, $aTags); }
Множество элементов, кэшируемых в типовых контроллерах показа, в случае использования теuгированного кэша, могут быть удалены иp кэша вызовом метода clearCache() у соответствующей модели, например:
$oShop_Item = Core_Entity::factory('Shop_Item', 123); $oShop_Item->clearCache();
Удаление по ключу:
if (Core::moduleIsActive('cache')) { Core_Cache::instance(Core::$mainConfig['defaultCache']) ->delete($cacheKey, $cacheName); }
Удаление из кэша всех ключей, для которых был указан тег 'foo':
if (Core::moduleIsActive('cache')) { Core_Cache::instance(Core::$mainConfig['defaultCache']) ->deleteByTag('foo'); }
Удаление из кэша $cacheName всех ключей:
if (Core::moduleIsActive('cache')) { Core_Cache::instance(Core::$mainConfig['defaultCache']) ->deleteAll($cacheName); }