Php ODM文档重用原则

Php ODM文档重用原则,php,performance,doctrine-orm,odm,Php,Performance,Doctrine Orm,Odm,场景:在我的PHP slim应用程序中,我有一个用于验证的类,如果验证通过,我就使用一个控制器来执行RESTful样式的更新 我的问题是:如果我执行一个查询,然后在代码的一个不相关部分执行一个返回部分/所有相同文档的查询。条令文档管理器是否重用以前检索到的文档 提前谢谢! Ben原则可以扩展到使用对象缓存(如Redis)来减少对数据库的点击 我们还向数据访问层添加了代码,以减少查询—这是Doctrine的上游。关于Doctrine缓存的更多细节在这里:我实际上已经在Doctrine级别使用APC

场景:在我的PHP slim应用程序中,我有一个用于验证的类,如果验证通过,我就使用一个控制器来执行RESTful样式的更新

我的问题是:如果我执行一个查询,然后在代码的一个不相关部分执行一个返回部分/所有相同文档的查询。条令文档管理器是否重用以前检索到的文档

提前谢谢!
Ben

原则可以扩展到使用对象缓存(如Redis)来减少对数据库的点击


我们还向数据访问层添加了代码,以减少查询—这是Doctrine的上游。

关于Doctrine缓存的更多细节在这里:我实际上已经在Doctrine级别使用APC了。。。虽然我不确定存储key=>value对或编译的PHP.APC是否提供了PHP字节码缓存,它也提供了基于内存的键/值缓存。这是一种平衡行为-如果您使用多台服务器/拥有大量数据,我们更喜欢使用专用对象缓存,如redis或memcache。您的应用程序是否在整个应用程序中使用相同的DocumentManager实例?我的印象是,DM会在检索对象后将其保存在内存中。但是,如果应用程序的两个部分之间没有共享任何内容,则没有多大用处。是的,是同一个文档管理器,这使我认为文档可能会在当前执行中保持不变。您必须进行检查,但是如果DM在应用程序的两个部分之间共享,并且不相关的代码在与第一个查询相同的请求中运行,那么DM应该已经在内存中存储了这些文档。但是,我不知道,如果第二个查询包含内存中尚未包含的文档,会发生什么情况,也就是说,Doctrine是只获取丢失的文档,还是再次获取所有文档?