|
|
@ -5,7 +5,7 @@ |
|
|
|
основой для расширенных возможностей, таких как [кэширование запросов](#query-caching) |
|
|
|
основой для расширенных возможностей, таких как [кэширование запросов](#query-caching) |
|
|
|
и [кэширование страниц](caching-page.md). |
|
|
|
и [кэширование страниц](caching-page.md). |
|
|
|
|
|
|
|
|
|
|
|
Приведённый ниже код является типичным случаем кэширования данных, где `$cache` указывает на [компонент кеширования](#cache-components): |
|
|
|
Приведённый ниже код является типичным случаем кэширования данных, где `$cache` указывает на [компонент кэширования](#cache-components): |
|
|
|
|
|
|
|
|
|
|
|
```php |
|
|
|
```php |
|
|
|
// Пробуем извлечь $data из кэша. |
|
|
|
// Пробуем извлечь $data из кэша. |
|
|
@ -23,7 +23,7 @@ if ($data === false) { |
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Компоненты кеширования <a name="cache-components"></a> |
|
|
|
## Компоненты кэширования <a name="cache-components"></a> |
|
|
|
|
|
|
|
|
|
|
|
Кэширование данных опирается на *компоненты кэширования*, которые представляют различные хранилища, такие как память, |
|
|
|
Кэширование данных опирается на *компоненты кэширования*, которые представляют различные хранилища, такие как память, |
|
|
|
файлы и базы данных. |
|
|
|
файлы и базы данных. |
|
|
@ -82,7 +82,7 @@ Yii поддерживает множество хранилищ кэша: |
|
|
|
вы должны создать таблицу, как описано в [[yii\caching\DbCache::cacheTable]]. |
|
|
|
вы должны создать таблицу, как описано в [[yii\caching\DbCache::cacheTable]]. |
|
|
|
* [[yii\caching\DummyCache]]: является кэшем-пустышкой, не реализующим реального кэширования. Смысл этого компонента в |
|
|
|
* [[yii\caching\DummyCache]]: является кэшем-пустышкой, не реализующим реального кэширования. Смысл этого компонента в |
|
|
|
упрощении кода, который должен проверить наличие кэша. Вы можете использовать данный тип кэша, например, при разработке |
|
|
|
упрощении кода, который должен проверить наличие кэша. Вы можете использовать данный тип кэша, например, при разработке |
|
|
|
или если сервер не поддерживает кэш и переключиться на реальное кеширование позже. Для извлечения данных, в этом случае, |
|
|
|
или если сервер не поддерживает кэш и переключиться на реальное кэширование позже. Для извлечения данных, в этом случае, |
|
|
|
используется один и тот же код `Yii::$app->cache->get($key)`. При этом можно не беспокоиться, что `Yii::$app->cache` |
|
|
|
используется один и тот же код `Yii::$app->cache->get($key)`. При этом можно не беспокоиться, что `Yii::$app->cache` |
|
|
|
может быть `null`. |
|
|
|
может быть `null`. |
|
|
|
* [[yii\caching\FileCache]]: использует обычные файлы для хранения кэшированных данных. Замечательно подходит для |
|
|
|
* [[yii\caching\FileCache]]: использует обычные файлы для хранения кэшированных данных. Замечательно подходит для |
|
|
@ -129,7 +129,7 @@ Yii поддерживает множество хранилищ кэша: |
|
|
|
[[yii\caching\Cache::mget()|mget()]] и [[yii\caching\Cache::madd()|madd()]]. В случае, если хранилище не поддерживает |
|
|
|
[[yii\caching\Cache::mget()|mget()]] и [[yii\caching\Cache::madd()|madd()]]. В случае, если хранилище не поддерживает |
|
|
|
эту функцию, она будет имитироваться. |
|
|
|
эту функцию, она будет имитироваться. |
|
|
|
|
|
|
|
|
|
|
|
Так как [[yii\caching\Cache]] реализует `ArrayAccess`, компонент кеша можно испльзовать как массив: |
|
|
|
Так как [[yii\caching\Cache]] реализует `ArrayAccess`, компонент кэша можно испльзовать как массив: |
|
|
|
|
|
|
|
|
|
|
|
```php |
|
|
|
```php |
|
|
|
$cache['var1'] = $value1; // эквивалентно: $cache->set('var1', $value1); |
|
|
|
$cache['var1'] = $value1; // эквивалентно: $cache->set('var1', $value1); |
|
|
@ -179,7 +179,7 @@ $value2 = $cache['var2']; // эквивалентно: $value2 = $cache->get('v |
|
|
|
Элементы данных, хранимые в кэше, остаются там навсегда если только они не будут удалены из-за особенностей |
|
|
|
Элементы данных, хранимые в кэше, остаются там навсегда если только они не будут удалены из-за особенностей |
|
|
|
функционирования хранилища (например, место для кэширования заполнено и старые данные удаляются). Чтобы изменить этот |
|
|
|
функционирования хранилища (например, место для кэширования заполнено и старые данные удаляются). Чтобы изменить этот |
|
|
|
режим, вы можете передать истечение срока действия ключа при вызове метода [[yii\caching\Cache::set()|set()]]. |
|
|
|
режим, вы можете передать истечение срока действия ключа при вызове метода [[yii\caching\Cache::set()|set()]]. |
|
|
|
Параметр указывает, сколько секунд элемент кеша может считаться актуальным. Если срок годности ключа истёк, |
|
|
|
Параметр указывает, сколько секунд элемент кэша может считаться актуальным. Если срок годности ключа истёк, |
|
|
|
[[yii\caching\Cache::get()|get()]] вернёт `false`: |
|
|
|
[[yii\caching\Cache::get()|get()]] вернёт `false`: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -259,7 +259,7 @@ $result = $db->cache(function ($db) { |
|
|
|
|
|
|
|
|
|
|
|
Кэширование запросов имеет три глобальных конфигурационных параметра через [[yii\db\Connection]]: |
|
|
|
Кэширование запросов имеет три глобальных конфигурационных параметра через [[yii\db\Connection]]: |
|
|
|
|
|
|
|
|
|
|
|
* [[yii\db\Connection::enableQueryCache|enableQueryCache]]: включить или выключить кэширование запросовю. |
|
|
|
* [[yii\db\Connection::enableQueryCache|enableQueryCache]]: включить или выключить кэширование запросов. |
|
|
|
По умолчанию `true`. Стоит отметить, что для использования кэширования вам может понадобиться компонент |
|
|
|
По умолчанию `true`. Стоит отметить, что для использования кэширования вам может понадобиться компонент |
|
|
|
cache, как показано в [[yii\db\Connection::queryCache|queryCache]]. |
|
|
|
cache, как показано в [[yii\db\Connection::queryCache|queryCache]]. |
|
|
|
* [[yii\db\Connection::queryCacheDuration|queryCacheDuration]]: количество секунд, в течение которых результат кэшируется. |
|
|
|
* [[yii\db\Connection::queryCacheDuration|queryCacheDuration]]: количество секунд, в течение которых результат кэшируется. |
|
|
|