在一个相当大的遗留项目中,我将几个毛茸茸的模块重构为 Moose 类。这些模块中的每一个都需要数据库访问(惰性)获取其属性。由于这些对象被大量使用,我想减少冗余请求的数量,例如对于未更改的数据。
现在,我该如何正确地做到这一点?我有几种选择:
- 通过一个角色在我的 Moose 类中实现缓存,以将它们存储在
memcached
5-10 分钟到期(可能不太难,但对于惰性属性很棘手)更新:KiokuDB 可能在这里有所帮助,必须阅读有关属性的信息 - 迁移到
DBIx::Class
(无论如何都需要完成)并在此级别上实现缓存(DBIC 可能会自行消除大部分痛苦) - 不知何故让我的对象在 mod_perl 进程中持续存在(不知道如何做到这一点:()
你将如何做到这一点,你认为什么是理智的方式?在对象或 ORM 级别上优先缓存数据吗?