【发布时间】:2011-05-04 16:01:20
【问题描述】:
我想在我正在开发的当前 Web 应用程序中使用模型级别的缓存。
我习惯于缓存一般的东西,比如“最新消息”或其他非用户特定的东西,我正在寻找一些关于缓存依赖于用户特定数据的查询的方向。
例如,用户的 cmets 列表。查询将需要用户 ID,而结果将只特定于该用户,那么我应该如何缓存呢?
更重要的是,在更新评论时简单地清除整个缓存似乎非常低效,最好能获得一些关于如何清除用户特定缓存键的建议。
例子
function getEntryByInventory($id,$company_id) {
$getEntryByInventory = Cache::read('Entry.getEntryByInventory.'.$id.'.'.$company_id);
if($getEntryByInventory !==false) {
return $getEntryByInventory;
} else {
$getEntryByInventory = $this->find('first' , array(
'conditions' => array(
'Entry.id' => $id,
'Inventory.company_id' => $company_id
)
));
Cache::write('Entry.getEntryByInventory.'.$id.'.'.$company_id , $getEntryByInventory);
return $getEntryByInventory;
}
}
// How would I clear the above cache without knowing the company id?
function beforeSave() {
Cache::delete('????');
return true;
}
我可以将这个查询的结果保存在缓存中,并通过将 $company_id 添加到缓存键中来使其具体化,这样读取和写入缓存就可以了。
但在这种情况下,如果我需要从缓存中删除这个键,我需要 $company_id。
我的问题是,我是否以正确的方式进行此操作,如果不是,请指点!
提前致谢。
【问题讨论】:
标签: caching cakephp model memcached cache-control