Doctrine MongoDB result caching

孤街醉人 提交于 2019-12-21 05:07:32

问题


How would one go about caching Doctrine MongoDB results? Looking at the code for Configuration it doesn't appear to have a built in result cache like standard Doctrine, only a query cache.

I have thought of creating my own cache layer in the app but the returned objects are quite heavy as they contain lots of Doctrine logic not needed by the view. How can I pair down the objects so they are effectively just data containers?


回答1:


Doctrine MongoDB ODM does not support query caching, so this is definitely something you'd need to handle in your application for the time being.

If you have an issue with heavy objects, it's most likely the Proxy instances (for referenced documents), as those contain references to internal Doctrine services (e.g. UnitOfWork). If you wanted to cache these efficiently, you'd essentially need to cull those references before storage and then restore them after fetching from the cache. That's likely to be more trouble than its worth, but it would reduce the objects to the data containers that you want.

Alternatively, if you're using the query builder, you could disable hydration and then implement caching for returned array results. Beyond that, you could look into caching views in your application (this is ideal in Symfony2, where one request might hit several controllers, each of which can apply their own caching rules and optionally utilize ESI).



来源:https://stackoverflow.com/questions/12473797/doctrine-mongodb-result-caching

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!