1
RDBOC对象是通过不同的进程缓存的吗?我很想用mod-perl来运行它,它会考虑事情,即使它主要用于不会改变的事情(很多)。Rose :: DB :: Object ::缓存的内存是通过不同的进程缓存的吗?
另外,引用RDBOC的关系是否应该直观地使用缓存?
RDBOC对象是通过不同的进程缓存的吗?我很想用mod-perl来运行它,它会考虑事情,即使它主要用于不会改变的事情(很多)。Rose :: DB :: Object ::缓存的内存是通过不同的进程缓存的吗?
另外,引用RDBOC的关系是否应该直观地使用缓存?
Rose::DB::Object::Cached
将对象缓存在纯旧(非共享)内存中。在mod_perl下,这意味着每个apache进程都有自己的缓存。但是,您可以在服务器启动时缓存对象。所有这些缓存的对象将随后与每个apache子进程共享。这对于您在服务器的生命周期中不会期望更改的只读对象非常有用。
要获得更灵活的缓存选项,请查看Rose::DBx::Object::Cached::CHI
。
至于第二个问题,Rose::DB::Object::Cached
只能从load()
和save()
的高速缓存中读取和写入。大多数关系方法使用Manager查询来获取对象,因此不会从Rose::DB::Object::Cached
缓存中读取。
谢谢约翰,你有什么建议经理路线? – Timmy 2010-02-11 22:14:43
我建议不要缓存除只读对象以外的任何内容。根据我的经验,更高级别的缓存(例如页面组件或整个页面)或更低级别(例如,位于数据库本身之前的缓存)往往比缓存在数据库对象级别更有成果。 – 2010-02-11 23:21:02
他们是99%的时间只读。也许很小的事情会改变,但他们会被阅读所控制,而且不是最新的。几乎就像有一个表“ID,颜色,描述” - ID一样,颜色总是相同的,并且描述可能会稍微改变一次,但不是必需的。我已经转而使用Rose :: DBx :: Object :: Cached :: CHI来玩,除了管理员事务的不确定性之外,它已经非常有帮助了。 – Timmy 2010-02-11 23:26:01