2012-09-18 4 views
5

Comment procéder pour mettre en cache les résultats de Doctrine MongoDB? En regardant le code pour la configuration, il ne semble pas avoir de cache de résultat intégré comme la norme Doctrine, seulement un cache de requête.Doctrine Mise en cache des résultats MongoDB

J'ai pensé à créer ma propre couche de cache dans l'application, mais les objets retournés sont assez lourds car ils contiennent beaucoup de logique de Doctrine pas nécessaire pour la vue. Comment puis-je coupler les objets afin qu'ils ne soient effectivement que des conteneurs de données?

Répondre

5

Doctrine MongoDB ODM ne prend pas en charge la mise en cache des requêtes, c'est donc quelque chose que vous devez gérer dans votre application pour le moment.

Si vous rencontrez un problème avec des objets lourds, il s'agit probablement des instances Proxy (pour les documents référencés), car elles contiennent des références aux services Doctrine internes (par exemple, UnitOfWork). Si vous vouliez les mettre en cache de manière efficace, vous auriez essentiellement besoin d'éliminer ces références avant de les stocker, puis de les restaurer après avoir extrait le cache. Cela risque d'être plus problématique que sa valeur, mais cela réduirait les objets dans les conteneurs de données que vous voulez. Sinon, si vous utilisez le générateur de requête, vous pouvez désactiver l'hydratation et implémenter la mise en cache pour les résultats de tableau renvoyés. Au-delà, vous pouvez vous intéresser à la mise en cache des vues dans votre application (idéal dans Symfony2, où une requête peut toucher plusieurs contrôleurs, chacun pouvant appliquer ses propres règles de mise en cache et éventuellement utiliser ESI).

+0

mongodb inutile la plupart des choses qu'il ne supporte pas –

+1

@SunilRawat ODM est un projet open source, allez-y, implémentez la mise en cache et envoyez un PR au lieu de râler – malarzm

Questions connexes