Commit 5584b834 by riverlet

encoding = =||

parent 48fe9010
数据缓存 数据缓存
============ ============
数据缓存是指将一些 PHP 变量存储到缓存中,使用时再从缓存中取回。 数据缓存是指将一些 PHP 变量存储到缓存中,使用时再从缓存中取回。
它也是更高级缓存特性的基础,例如 [查询缓存](#query-caching)[内容缓存](caching-content.md). 它也是更高级缓存特性的基础,例如 [查询缓存](#query-caching)[内容缓存](caching-content.md).
如下代码是一个典型的数据缓存使用模式。其中 `$cache` 代表一个 [缓存组件](#cache-components): 如下代码是一个典型的数据缓存使用模式。其中 `$cache` 代表一个 [缓存组件](#cache-components):
```php ```php
// 尝试从缓存中取出 $data // 尝试从缓存中取出 $data
$data = $cache->get($key); $data = $cache->get($key);
if ($data === false) { if ($data === false) {
// $data 在缓存中没有找到,则重新计算它的值 // $data 在缓存中没有找到,则重新计算它的值
// 将 $data 存放到缓存供下次使用 // 将 $data 存放到缓存供下次使用
$cache->set($key, $data); $cache->set($key, $data);
} }
// 这儿 $data 可以使用了。 // 这儿 $data 可以使用了。
``` ```
## 缓存组件 <a name="cache-components"></a> ## 缓存组件 <a name="cache-components"></a>
数据缓存需要称作“*缓存组件*”的东西提供支持,它代表着各种缓存存储介质,例如内存,文件,数据库。 数据缓存需要称作“*缓存组件*”的东西提供支持,它代表着各种缓存存储介质,例如内存,文件,数据库。
缓存组件通常注册为应用程序组件,这样它们就可以接受全局性配置和调用。如下代码演示了如何配置 `cache` 缓存组件通常注册为应用程序组件,这样它们就可以接受全局性配置和调用。如下代码演示了如何配置 `cache`
应用程序组件使用两个 [memcached](http://memcached.org/) 服务器: 应用程序组件使用两个 [memcached](http://memcached.org/) 服务器:
```php ```php
'components' => [ 'components' => [
...@@ -49,10 +49,10 @@ if ($data === false) { ...@@ -49,10 +49,10 @@ if ($data === false) {
], ],
``` ```
然后你就可以通过 `Yii::$app->cache` 访问上面的缓存组件了。 然后你就可以通过 `Yii::$app->cache` 访问上面的缓存组件了。
由于所有缓存组件都支持同样的一系列 API ,你并不需要修改使用缓存的那些代码就能直接替换为其他低层缓存组件, 由于所有缓存组件都支持同样的一系列 API ,你并不需要修改使用缓存的那些代码就能直接替换为其他低层缓存组件,
只需在应用程序配置中重新配置一下就可以。例如,你可以将上述配置修改为使用 [[yii\caching\ApcCache|APC cache]]: 只需在应用程序配置中重新配置一下就可以。例如,你可以将上述配置修改为使用 [[yii\caching\ApcCache|APC cache]]:
```php ```php
...@@ -63,7 +63,7 @@ if ($data === false) { ...@@ -63,7 +63,7 @@ if ($data === false) {
], ],
``` ```
> Tip: 你可以注册多个缓存组件,很多依赖缓存的类默认调用名为 `cache` 的组件(例如 [[yii\web\UrlManager]])。 > Tip: 你可以注册多个缓存组件,很多依赖缓存的类默认调用名为 `cache` 的组件(例如 [[yii\web\UrlManager]])。
### Supported Cache Storage <a name="supported-cache-storage"></a> ### Supported Cache Storage <a name="supported-cache-storage"></a>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment