5

Doctrine MongoDB の結果をキャッシュするにはどうすればよいでしょうか? 構成のコードを見ると、標準の Doctrine のような結果キャッシュが組み込まれておらず、クエリ キャッシュのみが含まれているようです。

アプリで独自のキャッシュ レイヤーを作成することを考えましたが、返されたオブジェクトには、ビューが必要としない Doctrine ロジックが多く含まれているため、非常に重いものがあります。オブジェクトをペアにして、効果的に単なるデータ コンテナーにするにはどうすればよいですか?

4

1 に答える 1

5

Doctrine MongoDB ODM はクエリ キャッシングをサポートしていないため、当分の間アプリケーションで処理する必要があることは間違いありません。

重いオブジェクトに問題がある場合、(参照されているドキュメントの) Proxy インスタンスが内部 Doctrine サービス (UnitOfWork など) への参照を含んでいるため、最も可能性が高いのは Proxy インスタンスです。これらを効率的にキャッシュしたい場合は、基本的に、ストレージの前にそれらの参照を選別し、キャッシュからフェッチした後にそれらを復元する必要があります。これは、その価値よりも問題になる可能性がありますが、オブジェクトを必要なデータ コンテナーに減らすことができます。

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

于 2012-09-19T18:31:49.807 に答える