2012-09-18 8 views
5

Doctrine MongoDBの結果をキャッシュする方法を教えてください。設定のコードを見ると、Doctrineのような組み込みの結果キャッシュはないように見えますが、クエリキャッシュのみです。Doctrine MongoDB結果キャッシュ

私は自分のキャッシュ層をアプリケーションに作成することを考えましたが、返されたオブジェクトは、ビューに必要のない多くのDoctrineロジックを含んでいるためかなり重いです。どのようにオブジェクトをペアにして、実質的にデータコンテナにすることができますか?

答えて

5

Doctrine MongoDB ODMではクエリキャッシュがサポートされていないため、当面はアプリケーションで処理する必要があります。

重いオブジェクトで問題が発生した場合は、内部Doctrineサービス(例:UnitOfWork)への参照を含むProxyインスタンス(参照されたドキュメント)の可能性が高いです。これらを効率的にキャッシュしたいのであれば、それらの参照をストレージの前に取り除き、キャッシュからフェッチした後でリストアする必要があります。これは価値よりも面倒なことですが、オブジェクトを必要なデータコンテナに縮小します。

また、クエリビルダを使用している場合は、ハイドレーションを無効にして、返された配列結果のキャッシングを実装できます。それ以外にも、アプリケーションのビューをキャッシュすることができます(これはSymfony2で理想的です。コントローラごとに1つのリクエストがあり、それぞれが独自のキャッシュルールを適用し、オプションでESIを利用できます)。

+0

役に立たないmongodbほとんどのものがサポートしていないもの –

+1

@SunilRawat ODMはオープンソースプロジェクトです。キャッシングを実装し、ランディングではなくPRを送信します – malarzm