2012-09-18 7 views
5

¿Cómo se puede almacenar en caché los resultados de Doctrine MongoDB? Al mirar el código para la Configuración, no parece tener un caché de resultados integrado como Doctrine estándar, solo un caché de consultas.Caché de resultados Doctrine MongoDB

He pensado en crear mi propia capa de caché en la aplicación, pero los objetos devueltos son bastante pesados ​​ya que contienen mucha lógica de Doctrine que la vista no necesita. ¿Cómo puedo emparejar los objetos para que sean solo contenedores de datos?

Respuesta

5

Doctrina MongoDB ODM no es compatible con el almacenamiento en caché de consulta, por lo que este es definitivamente algo que había necesidad de manejar en su aplicación por el momento.

Si tiene un problema con los objetos pesados, lo más probable es que las instancias de Proxy (para los documentos de referencia), ya que contienen referencias a los servicios internos de Doctrine (por ejemplo, UnitOfWork). Si desea almacenarlos en caché de forma eficiente, básicamente deberá eliminar esas referencias antes del almacenamiento y luego restaurarlas después de recuperarlas de la memoria caché. Es probable que sea más problemático que lo que vale, pero reducirá los objetos a los contenedores de datos que desee.

Alternativamente, si usted está utilizando el generador de consultas, se puede desactivar la hidratación y luego implementar el almacenamiento en caché de resultados de la matriz devueltos. Más allá de eso, podría buscar vistas de almacenamiento en caché en su aplicación (esto es ideal en Symfony2, donde una solicitud puede afectar a varios controladores, cada uno de los cuales puede aplicar sus propias reglas de almacenamiento en caché y utilizar ESI opcionalmente).

+0

inútil mongodb la mayoría de las cosas no es compatible –

+1

@SunilRawat ODM es un proyecto de código abierto, seguir adelante, implementar el almacenamiento en caché y enviar un PR en lugar de despotricar – malarzm

Cuestiones relacionadas