2017-10-27 6 views
0

プロジェクトがRESTに基づいていたとき、200 ms〜 の応答時間がありました。プロジェクトをGraphQLに変更しました。Graphqlネストされたクエリが極端に遅い

各ノードが解決しようとしているため、解決後にサブエンティティも解決しています。 が非常に高いレイテンシを引き起こす場合、応答時間は〜11秒です!

私がしたことは、すべてのサブエンティティを含む必要なすべての情報を取得し、この巨大なオブジェクトをクエリリゾルバから解決しようとしています。

応答時間が800msに短縮されました。

しかし、サブエンティティのリゾルバはまだ起こっています! (私はこのテストのためにシャットダウンしなければならなかった)。 場合によっては、どのようにそれらをシャットダウンできますか?

これを解決する他の方法はありますか?

答えて

0

親オブジェクトのプロパティが定義されていない場合にのみ、各フィールドの関連データを取得したいと思うかもしれません。だから、あなたリゾルバ場合は、次のようになります。

foos ({ id, foos }, args, context) { 
    return foos ? foos : getFoos(id) 
} 
+0

おかげで、私はそれを試してみましょう:

foos ({ id }, args, context) { return getFoos(id) } 

はちょうどこのように、条件付きのデータをフェッチ呼び出しを行います。任意のレシピを知っていれば、どのようにしてgraphqlクエリーの待ち時間を短縮できますか? –

関連する問題