rob*_*vey 2 php caching cakephp
考虑以下;
Cache::write('Model.key1' , 'stuff');
Cache::write('AnotherModel.key1' , 'stuff');
Cache::write('Model.key2' , 'stuff');
Run Code Online (Sandbox Code Playgroud)
我可以从缓存中删除一组密钥吗?
例如,如果我想清除"Model"的所有缓存数据,但在缓存中留下"AnotherModel",我想使用以下内容;
Cache::delete('Model.*');
Run Code Online (Sandbox Code Playgroud)
可以在CakePHP 1.3.x中实现这种功能吗?
谢谢!
对于那些只是谷歌搜索这个问题(就像我一样),Cake 2.2现在支持这种功能(无需为每个'组'创建单独的缓存配置).
这里有一点解释,虽然它缺少一些细节:http:
//book.cakephp.org/2.0/en/core-libraries/caching.html#using-groups
但这就是我在我的应用程序中所做的,它似乎运行良好.;-)
在 /app/Config/core.php
Cache::config('default', array(
'engine' => $engine,
...
'groups' => ['navigation'],
));
Run Code Online (Sandbox Code Playgroud)
模型afterSave钩子:
function afterSave($created) {
// This deletes all keys beginning with 'navigation'
Cache::clearGroup('navigation');
parent::afterSave($created);
}
Run Code Online (Sandbox Code Playgroud)
然后在我的控制器/模型中需要昂贵的查询......
// We create a unique key based on parameters passed in
$cacheKey = "navigation.$sitemapId.$levelsDeep.$rootPageId";
$nav = Cache::read($cacheKey);
if (!$nav) {
$nav = $this->recursiveFind(
'ChildPage',
['page_id' => $rootPageId],
$levelsDeep
);
Cache::write($cacheKey, $nav);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2056 次 |
| 最近记录: |