10

私はFacebookアプリケーションを最適化しようとしています。フィールド展開を使用したFacebook Graph APIコールは、バッチコールとは異なるレートでカウントされます

今日は4回のグラフAPI呼び出しでバッチ呼び出しを行います。

/me 
/me/friends 
/me/likes 
/me/feed 

私はこのようなフィールドの拡張を使用して、単一のグラフAPI呼び出しにこれを変更する場合:

/me?fields=id,name,username,friends,likes,feed 

それは今もカウントされますレート制限の目的で4つではなくAPIに対して1つのヒットとして

+0

はい、それ以外のものはほとんど意味がありません。 – CBroe

+1

これは明らかですが、FBレートの制限はかなり不透明であることに同意するので、私はFBの人々がその仮定を検証するのを聞きたいと思います。 –

+0

2回目の呼び出し*は*単一のAPI呼び出しです。フィールド拡張を使用していません。 – cpilko

答えて

3

残念ながら、バッチ内の各呼び出しはAPIコールとしてカウントされますが、バッチ内で呼び出すのは1回のリクエストになるため、呼び出しが速くなります。 FacebookのAPIのドキュメントここを参照してください:

制限
我々は現在、50のバッチでできる要求の数を制限しますが、バッチ内の各呼び出しは、API呼び出しの限界を計算する目的のために別々にカウントされており、リソース制限。たとえば、10個のAPI呼び出しのバッチは10個の呼び出しとしてカウントされ、バッチ内の各呼び出しは同じ方法でCPUリソースの制限に寄与します。

出典:Facebook Docsによると https://developers.facebook.com/docs/reference/api/batch/

+1

Facebookは、この質問が尋ねられたときと答えられたときの間に公式文書を更新しました。ありがとうKevin! –

+1

@RichSutton Nps。うん、私はそれのようなものを考えていた:) –

+0

フィールド展開!=バッチ。バッチは、複数の、しかし必ずしも関連しないクエリーを1回のリクエストでFacebookに送信します。フィールドの拡張は、SQLでたくさんの結合を行うようなものです。それは唯一の呼び出しです。 – Galen

0

、グラフAPIの

フィールドの拡張機能は、あなたが効果的に単一のコールに複数のグラフクエリーを「参加」することができます。

上記のクエリは、バッチフォームでは4回、フィールド展開フォームでは1回の呼び出しを表します。

上記のコメントで述べたように、バッチは、1回のリクエストで複数回ではなく必ずしも関連しないクエリをFacebookに送信します。フィールドの拡張は、単一の問合せを介してSQLで結合を実行するようなものです。

2

現実世界のテストに基づいて、フィールドの拡張はレート制限の下での複数の使用に影響することがわかりました。たとえば、静かな状態から始めて、63個のフィールド拡張された一連の呼び出しが単一のAPI(graph.facebook.com/IDENTITY/posts)に送られて600コールレートの制限に達しました。

関連する問題