【发布时间】:2014-04-30 20:54:59
【问题描述】:
我想在 Yii 中使用标签缓存。
但事实证明,前端使用其缓存作为后端。当我在后端更改模型时,不会清除缓存的前面。有什么解决办法吗?
对不起我的英语。
【问题讨论】:
我想在 Yii 中使用标签缓存。
但事实证明,前端使用其缓存作为后端。当我在后端更改模型时,不会清除缓存的前面。有什么解决办法吗?
对不起我的英语。
【问题讨论】:
在各自的配置文件中为前端和后端设置不同的缓存前缀。
我还在使用 1.1.x 分支,但是对于 2.x 分支应该是一样的。
前端配置文件:
'cache' => array(
'class' => 'system.caching.' . (!MW_DEBUG ? 'CFileCache' : 'CDummyCache'),
'keyPrefix' => md5('frontend.' . MW_VERSION . Yii::getPathOfAlias('frontend')),
),
后端配置文件:
'cache' => array(
'class' => 'system.caching.' . (!MW_DEBUG ? 'CFileCache' : 'CDummyCache'),
'keyPrefix' => md5('backend.' . MW_VERSION . Yii::getPathOfAlias('backend')),
),
【讨论】:
在我的例子中,在 DI 中缓存服务的运行时,对于 FileCache,设置另一个 cachePath 也可以正常工作。
//in backend
$cache = \Yii::$app->cache;
if ($cache instanceof FileCache) {
$cache->cachePath = \Yii::getAlias('@frontend/runtime/cache');
$cache->set('my_cache_prefix', $myData);
}
//This way I have overridden expired cache in frontend
【讨论】: