如何正确减少mod_perl的冗余请求数?

Nik*_*nko 6 perl caching moose kiokudb

在一个相当大的遗留项目中,我已经将几个毛茸茸的模块重构为Moose类.这些模块中的每一个都需要数据库访问(懒惰)获取其属性.由于这些对象使用得相当多,我想减少冗余请求的数量,例如对于未更改的数据.

现在,我该如何正确地做到这一点?我有几个选择:

  1. 在我的Moose类中实现缓存,通过一个角色将它们存储在memcached5-10分钟的到期时间(可能不是太困难,但是对于懒惰属性来说很棘手)更新:KiokuDB可能在这里有所帮助,必须阅读有关属性的内容
  2. 迁移到DBIx::Class(无论如何都需要完成)并在此级别上实现缓存(DBIC可能会消除大部分的痛苦)
  3. 不知怎的,让我的对象在mod_perl进程内持久存在(不知道如何做到这一点:()

你会怎么做?你认为什么是理智的方式?是否在对象或ORM级别上缓存数据?

Ada*_*ire 0

由于无论如何您已经要进行 DBIC,因此让此更改来解决它是有意义的。自行推出然后实施 DBIC 的意义不大,当维护人员发现您使用 DBIC 但使用自行开发的缓存时,他们会犹豫不决……“出于某种原因”。

不这样做的唯一原因是 (1) 如果您现在确实需要这种性能,并且您没有时间等待 DBIC 更改,因为我认为这将是相当广泛的。或者 (2),如果您不确定是否真的要转到 DBIC。如果您没有对其进行调查并且正在执行大量自定义 SQL 而不是基本 CRUD,那么最终的投资回报可能会非常小。