【问题标题】:CakePHP caching user specific query data, best practiceCakePHP 缓存用户特定的查询数据,最佳实践
【发布时间】: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


    【解决方案1】:

    确保您最后而不是首先实施缓存。一旦您的应用程序正常工作,您就可以开始缓存特定元素。有些东西不值得缓存(你不能到处缓存所有用户的 cmets)。存储就在那里。而是在尝试深入研究复杂的缓存之前消除瓶颈(其中大部分将是直截了当的)。

    【讨论】:

      【解决方案2】:

      如果您使用afterSave() 函数而不是beforeSave() 函数,则保存的数据/信息将在$this->data 中可用。

       public function afterSave($created, $options = array()) {
              debug($this->data); // contains id of the modified record
              if ($created) {
                  Cache::clear('Entry.getEntryByInventory.'.$this->data['Model']['id'].'.'.$this->data['Model']['company_id']);
              }
          }
      

      【讨论】:

        猜你喜欢
        • 2010-09-25
        • 1970-01-01
        • 1970-01-01
        • 2016-08-28
        • 2013-08-12
        • 1970-01-01
        • 2015-05-31
        • 2011-01-17
        • 2023-03-13
        相关资源
        最近更新 更多