yidashi 2015-12-28 14:47:45 4512次浏览 5条回复 1 0 0

http://www.yiichina.com/doc/guide/2.0/caching-data
文档最下边的查询缓存纯粹是扯蛋!完完全全错误的东西,误导人!

查询缓存

查询缓存是一个建立在数据缓存之上的特殊缓存特性。它用于缓存数据库查询的结果。

查询缓存需要一个 yii\db\Connection 和一个有效的 cache 应用组件。查询缓存的基本用法如下,假设 $db 是一个 yii\db\Connection 实例:

$duration = 60;     // 缓存查询结果60秒
$dependency = ...;  // 可选的缓存依赖

$db->beginCache($duration, $dependency);

// ...这儿执行数据库查询...

$db->endCache();

如你所见,beginCache() 和 endCache() 中间的任何查询结果都会被缓存起来。如果缓存中找到了同样查询的结果,则查询会被跳过,直接从缓存中提取结果。

查询缓存可以用于 ActiveRecord 和 DAO。

上边是yiichina的有关查询缓存的文档内容,经实践,db类根本就不能调用beginCacheendCache。下边的是官方正确的文档内容。

Query Caching Query caching is a special caching feature built on top of data caching. It is provided to cache the result of database queries.

Query caching requires a DB connection and a valid cache application component. The basic usage of query caching is as follows, assuming $db is a yii\db\Connection instance:

$result = $db->cache(function ($db) {

    // the result of the SQL query will be served from the cache
    // if query caching is enabled and the query result is found in the cache
    return $db->createCommand('SELECT * FROM customer WHERE id=1')->queryOne();

});

Query caching can be used for DAO as well as ActiveRecord:

$result = Customer::getDb()->cache(function ($db) {
    return Customer::find()->where(['id' => 1])->one();
});

原连接http://www.yiiframework.com/doc-2.0/guide-caching-data.html,完全不一样,亲测官方文档才是正确的。

您需要登录后才可以回复。登录 | 立即注册