10 августа 2011 г.

Простое кеширование вызовов Zend_Db_Table

Кеширование вызовов моделей (да и любых других классов) в зенде классически реализуется с помощью Zend_Cache_Frontend_Class.

В оригинале это выглядит примерно так:

Copy Source | Copy HTML
  1. $model = MyModel();
  2. $model_cached = MyModelCached();
  3.  
  4. $values_direct = $model->doStuff();
  5. $values_cached = $model_cached->doStuff();


Этот путь мне не понравился сразу по нескольким причинам. 
Во первых - удваивание количества сущностей. Когда моделей много и Вы используете не по одной модельке на запрос монструозненько получается.
Во вторых - слишком много настроек кеша. Это очень хорошо и к месту, когда логика кеша сложна или нетривиальна. В моём случае весь кеш работает с одними и теми же настройками и совершать лишних телодвижений по его инстанцированию не хотелось бы.