1

以前に尋ねられたこの特定の質問はまだ見つかりませんでした。投影されたクエリと完全なエンティティクエリを使用する場合、App EngineのNDBはキャッシュをどのように処理しますか?

たとえば、最初に射影クエリを実行した場合。

MyModel.query().get(projected=['name'])

...次に通常のクエリを実行します...

MyModel.query().get()

...何がもらえますか?完全なエンティティ?もしそうなら、最初のクエリのいずれかの部分がNDBによって自動的にキャッシュされましたか?または、NDBは区別をうまく行うことができるので、次に投影されたクエリを実行すると、キャッシュからプルされる可能性がありますか?

4

2 に答える 2

4

私の知る限り、クエリ結果はコンテキスト内キャッシュにのみキャッシュされますが、クエリの結果はキャッシュからフェッチされません。

key.get()はキャッシュされてキャッシュから取得されますが、query.get()はキャッシュから取得されません。

https://developers.google.com/appengine/docs/python/ndb/cache

ドキュメントから:クエリはどのキャッシュでも値を検索しません。ただし、キャッシュポリシーで指定されている場合、クエリ結果はコンテキスト内キャッシュに書き戻されます(ただし、Memcacheには書き戻されません)。

何が得られるかに関する質問に答えるために、両方のクエリで、結果はキャッシュからではなくデータストアからフェッチされるように見えます。

于 2012-08-26T08:11:19.050 に答える
3

射影クエリの結果がキャッシュされることはありません。getbyキーが予測結果を返すとしたら、それは正しくありません。だから心配ありません。

于 2012-08-26T21:37:36.810 に答える