2012-09-18 10 views
5

In che modo si può eseguire il caching dei risultati di Doctrine MongoDB? Guardando il codice per la configurazione non sembra avere una cache dei risultati incorporata come Doctrine standard, solo una cache di query.Doctrine MongoDB cache dei risultati

Ho pensato di creare il mio livello cache nell'app ma gli oggetti restituiti sono piuttosto pesanti in quanto contengono molta logica Doctrine non necessaria per la vista. Come posso abbinare gli oggetti in modo che siano effettivamente solo contenitori di dati?

risposta

5

Doctrine MongoDB ODM non supporta il caching delle query, quindi questo è sicuramente qualcosa che dovresti gestire nella tua applicazione per il momento.

Se si verifica un problema con oggetti pesanti, è molto probabile che le istanze Proxy (per i documenti di riferimento), poiché contengono riferimenti a servizi Doctrine interni (ad esempio UnitOfWork). Se si desidera effettuare il caching di questi in modo efficiente, è necessario essenzialmente eliminare tali riferimenti prima di archiviarli e quindi ripristinarli dopo il recupero dalla cache. Probabilmente sarà più difficile del suo valore, ma ridurrebbe gli oggetti ai contenitori di dati che desideri.

In alternativa, se si sta utilizzando il generatore di query, è possibile disabilitare l'idratazione e quindi implementare il caching per i risultati dell'array restituito. Oltre a ciò, è possibile esaminare le visualizzazioni di memorizzazione nella cache dell'applicazione (questo è l'ideale in Symfony2, in cui una richiesta potrebbe colpire diversi controller, ognuno dei quali può applicare le proprie regole di memorizzazione nella cache e utilizzare facoltativamente ESI).

+0

mongodb inutile la maggior parte delle cose che non supporta –

+1

@SunilRawat ODM è un progetto open source, andare avanti, implementare il caching e inviare un PR invece di ranting – malarzm