В довольно большом унаследованном проекте я переделал несколько мохнатых модулей в классы Moose. Каждому из этих модулей требуется доступ к базе данных для (ленивого) извлечения его атрибутов. Поскольку эти объекты используются довольно интенсивно, я хочу уменьшить количество избыточных запросов, например, для неизмененных данных.
Теперь, как мне сделать это правильно? У меня есть несколько альтернатив:
- Реализовать кеширование в моих классах Moose через роль, чтобы хранить их в
memcached
с истечением 5-10 минут (вероятно, не слишком сложно, но сложно с ленивыми атрибутами) update: KiokuDB, вероятно, мог бы помочь здесь, придется почитай про атрибуты - Перейдите на
DBIx::Class
(это необходимо сделать в любом случае) и внедрите кэширование на этом уровне (DBIC, вероятно, сам по себе устранит большую часть проблем) - Каким-то образом мои объекты сохраняются внутри процесса mod_perl (не знаю, как это сделать :()
Как бы вы поступили и что вы считаете разумным? Кэширование данных предпочтительнее на уровне объекта или на уровне ORM?