Класс Cache
Cache предоставляет согласованный интерфейс к кэшированию в вашем приложении. Он позволяет использовать несколько различных движков кэша без привязки вашего приложения к конкретной реализации. Он также позволяет изменять хранилище или конфигурацию кэша, не затрагивая остальную часть вашего приложения.
Настройка движков кэша
Вы можете настроить движки кэша в файле вашего приложения Config/cache.php. Пример конфигурации:
Cache::config('shared', [
'className' => Cake\Cache\Engine\ApcuEngine::class,
'prefix' => 'my_app_'
]); Это настраивает движок кэша APCu с псевдонимом «shared». Затем вы можете читать и записывать в этот кэш-псевдоним, используя его в качестве параметра $config в различных методах Cache.
В целом, все операции кэширования поддерживаются всеми движками кэша. Однако Cache::increment() и Cache::decrement() не поддерживаются файловым кэшированием.
Существует 7 встроенных движков кэширования:
-
ApcuEngine- Использует кэш-объект APCu, один из самых быстрых движков кэширования. -
ArrayEngine- Использует только память для хранения всех данных, фактически не является постоянным движком. Может быть полезен в тестовой или CLI среде. -
FileEngine- Использует простые файлы для хранения содержимого. Низкая производительность, но хорошо подходит для хранения больших объектов или элементов, не чувствительных к вводу-выводу. Хорошо подходит для разработки, так как кэш легко проверить и вручную очистить. -
MemcacheEngine- Использует расширение PECL::Memcache и Memcached для хранения. Быстрые чтение/запись и выигрывает от распределённости memcache. -
RedisEngine- Использует redis и расширение php-redis для хранения данных кэша. -
WincacheEngine- Использует расширение Windows Cache для PHP. Поддерживает wincache 1.1.0 и выше. Этот движок рекомендуется для развертывания на Windows с IIS. -
XcacheEngine- Использует расширение Xcache, альтернативу APCu.
См. документацию по движкам кэширования для ожидаемых ключей конфигурации.
Краткое описание свойств
- $_config protected static
array<string, mixed>Наборы конфигурации.
- $_dsnClassMap protected static
array<string, string>Массив, сопоставляющий схемы URL с полными именами классов движков кэширования.
- $_enabled protected static
boolФлаг для отслеживания включения кэширования.
- $_groups protected static
array<string, array>Сопоставление группы с конфигурацией.
- $_registry protected static
Cake\Cache\CacheRegistry|nullРегистр кэша, используемый для создания и использования адаптеров кэша.
Краткое описание методов
-
_buildEngine() protected static
Находит и создаёт экземпляр необходимой сущности класса двигателя.
-
add() public static
Записывает данные для ключа в движок кэша, если он ещё не существует.
-
clear() public static
Удаляет все ключи из кэша.
-
clearAll() public static
Удаляет все ключи из кэша из всех конфигураций.
-
clearGroup() public static
Удаляет все ключи из кэша, относящиеся к одной группе.
-
configured() public static
Возвращает массив, содержащий именованные конфигурации.
-
decrement() public static
Уменьшает число по ключу и возвращает уменьшенное значение.
-
delete() public static
Удаляет ключ из кэша.
-
deleteMany() public static
Удаляет несколько ключей из кэша.
-
disable() public static
Отключает кэширование.
-
drop() public static
Удаляет созданный адаптер.
-
enable() public static
Включает кэширование.
-
enabled() public static
Проверяет, включено ли кэширование.
-
engine() public static deprecated
Получает объект двигателя кэша для указанной конфигурации кэша.
-
getConfig() public static
Читает существующую конфигурацию.
-
getConfigOrFail() public static
Читает существующую конфигурацию для определённого ключа.
-
getDsnClassMap() public static
Возвращает карту классов DSN для данного класса.
-
getRegistry() public static
Возвращает экземпляр Реестра кэша, используемого для создания и использования адаптеров кэша.
-
groupConfigs() public static
Получает отображение имен групп к конфигурации.
-
increment() public static
Увеличивает число по ключу и возвращает увеличенное значение.
-
parseDsn() public static
Разбирает DSN в корректную конфигурацию соединения.
-
pool() public static
Получает объект SimpleCacheEngine для указанного пула кэша.
-
read() public static
Считывает ключ из кэша.
-
readMany() public static
Считывает несколько ключей из кэша.
-
remember() public static
Предоставляет возможность легко выполнять кэширование с чтением.
-
setConfig() public static
Этот метод может быть использован для определения адаптеров конфигурации для приложения.
-
setDsnClassMap() public static
Обновляет карту классов DSN для этого класса.
-
setRegistry() public static
Устанавливает экземпляр Реестра кэша, используемый для создания и использования адаптеров кэша.
-
write() public static
Записывает данные для ключа в кэш.
-
writeMany() public static
Записывает данные для многих ключей в кэш.
Подробное описание методов
_buildEngine() protected static
_buildEngine(string $name): void
Находит и создаёт экземпляр требуемого класса движка.
Параметры
-
string$name Имя массива конфигурации, для которого требуется создать экземпляр движка.
Возвращает
voidИсключения
Cake\Cache\InvalidArgumentExceptionПри невозможности создания движка кеширования.
RuntimeExceptionЕсли загрузка движка не удалась.
add() public static
add(string $key, mixed $value, string $config = 'default'): bool
Записывает данные для ключа в движок кеширования, если они ещё не существуют.
Использование:
Запись в активную конфигурацию кеша:
Cache::add('cached_data', $data); Запись в определённую конфигурацию кеша:
Cache::add('cached_data', $data, 'long_term'); Параметры
-
string$key Идентификатор данных.
-
mixed$value Данные для кеширования — всё, кроме ресурсов.
-
string$config optional Необязательное имя конфигурации для записи. По умолчанию 'default'.
Возвращает
boolclear() public static
clear(string $config = 'default'): bool
Удаляет все ключи из кеша.
Параметры
-
string$config optional Имя используемой конфигурации. По умолчанию 'default'.
Возвращает
boolclearAll() public static
clearAll(): array<string, bool>
Удаляет все ключи из кеша из всех конфигураций.
Возвращает
array<string, bool>clearGroup() public static
clearGroup(string $group, string $config = 'default'): bool
Удаляет все ключи из кеша, принадлежащие одной группе.
Параметры
-
string$group Имя группы, которую нужно очистить.
-
string$config optional Имя конфигурации для использования. По умолчанию 'default'.
Возвращает
boolconfigured() public static
configured(): array<string>
Возвращает массив, содержащий именованные конфигурации.
Возвращает
array<string>decrement() public static
decrement(string $key, int $offset = 1, string $config = 'default'): int|false
Уменьшает число по ключу и возвращает уменьшенное значение.
Параметры
-
string$key Идентификатор данных.
-
int$offset optional На сколько уменьшить.
-
string$config optional Необязательное имя конфигурации. По умолчанию 'default'.
Возвращает
int|falseИсключения
Cake\Cache\InvalidArgumentExceptionесли смещение < 0
delete() public static
delete(string $key, string $config = 'default'): bool
Удаляет ключ из кеша.
Использование:
Удаление из активной конфигурации кеша.
Cache::delete('my_data'); Удаление из определённой конфигурации кеша.
Cache::delete('my_data', 'long_term'); Параметры
-
string$key Идентификатор данных.
-
string$config optional Имя конфигурации для использования. По умолчанию 'default'.
Возвращает
booldeleteMany() public static
deleteMany(iterable $keys, string $config = 'default'): bool
Удаляет множество ключей из кеша.
Использование:
Удаление нескольких ключей из активной конфигурации кеша.
Cache::deleteMany(['my_data_1', 'my_data_2']);
Удаление из определённой конфигурации кеша.
Cache::deleteMany(['my_data_1', 'my_data_2], 'long_term');
Параметры
-
iterable$keys Массив или Traversable удаляемых ключей кеша
-
string$config optional Имя конфигурации для использования. По умолчанию 'default'.
Возвращает
boolИсключения
Cake\Cache\InvalidArgumentExceptiondisable() public static
disable(): void
Отключить кеширование.
При отключении все операции кеширования вернут null.
Возвращает
voiddrop() public static
drop(string $config): bool
Удаляет созданный адаптер.
Если вы хотите изменить существующую конфигурацию, вы должны удалить её, изменить конфигурацию, а затем добавить её снова.
Если реализующие объекты поддерживают объект $_registry, то именованная конфигурация также будет загружена из реестра.
Параметры
-
string$config Существующая конфигурация, которую вы хотите удалить.
Возвращает
boolenable() public static
enable(): void
Включить кеширование.
Если кеширование было отключено с помощью Cache::disable(), этот метод отменит это действие.
Возвращает
voidenabled() public static
enabled(): bool
Проверяет, включено ли кеширование.
Возвращает
boolengine() public static
engine(string $config): Psr\SimpleCache\CacheInterfaceCake\Cache\CacheEngineInterface
Получить объект движка кеша для именованной конфигурации кеша.
Параметры
-
string$config Имя настроенного бэкенда кеша.
Возвращает
Psr\SimpleCache\CacheInterfaceCake\Cache\CacheEngineInterfacegetConfig() public static
getConfig(string $key): mixed|null
Считывает существующую конфигурацию.
Параметры
-
string$key Имя конфигурации.
Возвращает
mixed|nullgetConfigOrFail() public static
getConfigOrFail(string $key): mixed
Считывает существующую конфигурацию для определённого ключа.
Значение конфигурации для этого ключа должно существовать, оно никогда не может быть null.
Параметры
-
string$key Имя конфигурации.
Возвращает
mixedИсключения
InvalidArgumentExceptionЕсли значение не существует.
getDsnClassMap() public static
getDsnClassMap(): array<string, string>
Возвращает карту соответствий DSN для данного класса.
Возвращает
array<string, string>getRegistry() public static
getRegistry(): Cake\Cache\CacheRegistry
Возвращает экземпляр реестра кеша, используемый для создания и использования адаптеров кеша.
Возвращает
Cake\Cache\CacheRegistrygroupConfigs() public static
groupConfigs(string|null $group = null): array<string, array>
Получить сопоставление имён групп к конфигурациям.
Cache::config('daily', ['duration' => '1 day', 'groups' => ['posts']]);
Cache::config('weekly', ['duration' => '1 week', 'groups' => ['posts', 'archive']]);
$configs = Cache::groupConfigs('posts'); $configs будет равно ['posts' => ['daily', 'weekly']] Вызов этого метода загрузит все настроенные движки.
Параметры
-
string|null$group optional Имя группы или null для получения всех сопоставлений групп.
Возвращает
array<string, array>Исключения
Cake\Cache\InvalidArgumentExceptionincrement() public static
increment(string $key, int $offset = 1, string $config = 'default'): int|false
Увеличить число по ключу и вернуть увеличенное значение.
Параметры
-
string$key Идентификатор данных
-
int$offset необязательно На сколько увеличить
-
string$config необязательно Необязательное имя конфигурации. По умолчанию 'default'
Возвращает
int|falseИсключения
Cake\Cache\InvalidArgumentExceptionКогда offset < 0
parseDsn() public static
parseDsn(string $dsn): array<string, mixed>
Парсит DSN в корректную конфигурацию подключения
Этот метод позволяет задать DSN, используя формат, аналогичный используемому PEAR::DB. Вот пример его использования:
$dsn = 'mysql://user:pass@localhost/database?'; $config = ConnectionManager::parseDsn($dsn); $dsn = 'Cake\Log\Engine\FileLog://?types=notice,info,debug&file=debug&path=LOGS'; $config = Log::parseDsn($dsn); $dsn = 'smtp://user:secret@localhost:25?timeout=30&client=null&tls=null'; $config = Email::parseDsn($dsn); $dsn = 'file:///?className=\My\Cache\Engine\FileEngine'; $config = Cache::parseDsn($dsn); $dsn = 'File://?prefix=myapp_cake_core_&serialize=true&duration=+2 minutes&path=/tmp/persistent/'; $config = Cache::parseDsn($dsn);
Для всех классов значение scheme устанавливается как значение className, если не указано иное.
Обратите внимание, что аргументы querystring также парсятся и устанавливаются в качестве значений в возвращаемой конфигурации.
Параметры
-
string$dsn Строка DSN для преобразования в массив конфигурации
Возвращает
array<string, mixed>Исключения
InvalidArgumentExceptionЕсли не передана строка или передана некорректная строка
pool() public static
pool(string $config): Psr\SimpleCache\CacheInterfaceCake\Cache\CacheEngineInterface
Получить объект SimpleCacheEngine для указанного пула кэша.
Параметры
-
string$config Имя настроенного кэширующего бэкенда.
Возвращает
Psr\SimpleCache\CacheInterfaceCake\Cache\CacheEngineInterfaceread() public static
read(string $key, string $config = 'default'): mixed
Считать значение по ключу из кэша.
Использование:
Чтение из активной конфигурации кэша.
Cache::read('my_data'); Чтение из конкретной конфигурации кэша.
Cache::read('my_data', 'long_term'); Параметры
-
string$key Идентификатор данных
-
string$config необязательно Необязательное имя конфигурации для использования. По умолчанию 'default'
Возвращает
mixedreadMany() public static
readMany(iterable $keys, string $config = 'default'): iterable
Считать значения по множеству ключей из кэша.
Использование:
Чтение множества ключей из активной конфигурации кэша.
Cache::readMany(['my_data_1', 'my_data_2]);
Чтение из конкретной конфигурации кэша.
Cache::readMany(['my_data_1', 'my_data_2], 'long_term');
Параметры
-
iterable$keys Массив или Traversable ключей для извлечения из кэша
-
string$config необязательно Необязательное имя конфигурации для использования. По умолчанию 'default'
Возвращает
iterableИсключения
Cake\Cache\InvalidArgumentExceptionremember() public static
remember(string $key, callable $callable, string $config = 'default'): mixed
Предоставляет возможность легко выполнить кэширование чтения.
Если $key не задан в $config, будет вызван $callable. Результаты будут сохранены в конфигурации кэша по ключу.
Примеры:
Использование замыкания для предоставления данных, предположим, что $this это объект Table:
$results = Cache::remember('all_articles', function () {
return $this->find('all')->toArray();
}); Параметры
-
string$key Ключ кэша для чтения/хранения данных.
-
callable$callable Вызываемый объект, который предоставляет данные в случае, когда ключ кэша пуст. Может быть любого типа, поддерживаемого PHP.
-
string$config необязательно Конфигурация кэша для использования в этой операции. По умолчанию default.
Возвращает
mixedsetConfig() public static
setConfig(array<string, mixed>|string $key, object|array<string, mixed>|null $config = null): void
Этот метод может использоваться для определения адаптеров конфигурации для приложения.
Чтобы изменить конфигурацию адаптера во время выполнения, сначала удалите адаптер, а затем переконфигурируйте его.
Адаптеры не будут созданы до тех пор, пока не будет выполнено первое действие.
Использование
Предполагая, что имя класса Cache, поддерживаются следующие сценарии:
Настройка движка кэширования.
Cache::setConfig('default', $settings); Вставка созданного адаптера:
Cache::setConfig('default', $instance); Настройка нескольких адаптеров одновременно:
Cache::setConfig($arrayOfConfig);
Параметры
-
array<string, mixed>|string$key Имя конфигурации или массив нескольких конфигураций.
-
object|array<string, mixed>|null$config необязательно Массив имя => данные конфигурации для адаптера.
Возвращает
voidИсключения
BadMethodCallExceptionПри попытке изменить существующую конфигурацию.
LogicExceptionПри попытке сохранить некорректный структурированный массив конфигурации.
setDsnClassMap() public static
setDsnClassMap(array<string, string> $map): void
Обновляет карту соответствия DSN для данного класса.
Параметры
-
array<string, string>$map Добавления/изменения в карту классов для применения.
Возвращает
voidsetRegistry() public static
setRegistry(Cake\Cache\CacheRegistry $registry): void
Устанавливает экземпляр Cache Registry, используемый для создания и использования адаптеров кэша.
Также позволяет вставить новый экземпляр реестра.
Параметры
-
Cake\Cache\CacheRegistry$registry Вставляемый объект реестра.
Возвращает
voidwrite() public static
write(string $key, mixed $value, string $config = 'default'): bool
Записать данные для ключа в кэш.
Использование:
Запись в активную конфигурацию кэша:
Cache::write('cached_data', $data); Запись в определенную конфигурацию кэша:
Cache::write('cached_data', $data, 'long_term'); Параметры
-
string$key Идентификатор данных
-
mixed$value Данные для кэширования - все, кроме ресурса
-
string$config необязательно Необязательное имя конфигурации для записи. По умолчанию 'default'
Возвращает
boolwriteMany() public static
writeMany(iterable $data, string $config = 'default'): bool
Записать данные для множества ключей в кэш.
Использование:
Запись во активную конфигурацию кэша:
Cache::writeMany(['cached_data_1' => 'data 1', 'cached_data_2' => 'data 2']);
Запись в определенную конфигурацию кэша:
Cache::writeMany(['cached_data_1' => 'data 1', 'cached_data_2' => 'data 2'], 'long_term');
Параметры
-
iterable$data Массив или Traversable данных, которые нужно сохранить в кэше
-
string$config необязательно Необязательное имя конфигурации для записи. По умолчанию 'default'
Возвращает
boolИсключения
Cake\Cache\InvalidArgumentExceptionПодробное описание свойств
$_config protected static
Настройки.
Тип
array<string, mixed>$_dsnClassMap protected static
Массив, сопоставляющий схемы URL с полными именами классов движка кеширования.
Тип
array<string, string>$_enabled protected static
Флаг, указывающий, включен ли кеширование.
Тип
bool$_groups protected static
Сопоставление групп и конфигураций.
Тип
array<string, array>$_registry protected static
Регистр кэша, используемый для создания и использования адаптеров кэша.
Тип
Cake\Cache\CacheRegistry|null
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.3/class-Cake.Cache.Cache.html