Doctrine Memcached:保存记录后清除缓存

时间:2012-08-30 12:13:08

标签: caching symfony1 doctrine memcached

Doctrine 1. *保存记录后清除缓存吗?

似乎没有。我能在某个地方做到吗?

1 个答案:

答案 0 :(得分:1)

不,不。每次保存对象时都应手动清除缓存。

正如描述in the doc,最好的方法是使用事件,特别是postSave事件:

// lib/model/doctrine/User.class.php

class User extends BaseUser
{
  // ...

  public function postSave($event)
  {
    $cacheDriver = $this->getTable()->getAttribute(Doctrine_Core::ATTR_RESULT_CACHE);
    $cacheDriver->deleteByPrefix('users_');
  }
}

您还可以构建自定义类来管理缓存清除(as describe here):

<?php
class myCache{

    public static function clearRegexMatches($regex){
       Doctrine_Manager::getInstance()
            ->getAttribute(Doctrine_Core::ATTR_RESULT_CACHE)
            ->deleteByRegex($regex);
    }

    public static function clearOne($name){
        Doctrine_Manager::getInstance()
            ->getAttribute(Doctrine_Core::ATTR_RESULT_CACHE)
            ->delete($name);
    }
}