Doctrine MongoDB结果缓存

5
如何缓存Doctrine MongoDB的结果?查看Configuration的代码,似乎没有像标准Doctrine那样内置结果缓存,只有查询缓存。
我考虑在应用程序中创建自己的缓存层,但返回的对象相当重,因为它们包含许多视图不需要的Doctrine逻辑。如何精简这些对象,使它们有效地成为数据容器?
1个回答

5
Doctrine MongoDB ODM不支持查询缓存,因此这是您目前需要在应用程序中处理的事情。
如果您遇到重量级对象的问题,最有可能是代理实例(用于引用文档),因为它们包含对内部Doctrine服务(例如UnitOfWork)的引用。如果您想要有效地缓存它们,您需要在存储之前剔除这些引用,然后在从缓存中获取后恢复它们。这可能会比值得的麻烦,但它会将对象减少到您想要的数据容器。
或者,如果您正在使用查询构建器,可以禁用hydration,然后为返回的数组结果实现缓存。除此之外,您可以在应用程序中缓存视图(在Symfony2中非常理想,其中一个请求可能会触发多个控制器,每个控制器都可以应用自己的缓存规则,并可选择使用ESI)。

MongoDB 很多东西都不支持,几乎没什么用。 - Sunil Rawat
1
@SunilRawat ODM是一个开源项目,你可以实现缓存并发送PR,而不是抱怨。 - malarzm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接