与批量调用相比,使用字段扩展的Facebook Graph API调用与速率限制的计数方式不同

时间:2013-01-31 13:16:29

标签: facebook facebook-graph-api limit facebook-field-expansion

我希望优化我的Facebook应用程序。

今天我通过四个图形API调用进行批量调用:

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

如果我使用字段扩展将此更改为单个图形API调用,请执行以下操作:

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

为了限制速度,这现在算作API的一次而不是四次?

3 个答案:

答案 0 :(得分:3)

不幸的是,批处理中的每个调用都被视为api调用,在批处理中调用它们会更快,因为它将是1个请求。请参阅此处有关Facebook API的文档:

限制
我们目前将批处理中的请求数限制为50,但为了计算API调用限制和资源限制,批处理中的每个调用都会单独计算。例如,一批10个API调用将计为10个调用,批处理中的每个调用都以相同的方式对CPU资源限制做出贡献。

来源: https://developers.facebook.com/docs/reference/api/batch/

答案 1 :(得分:2)

根据实际测试,我发现在速率限制下,字段扩展可以计入多次使用。例如,从安静状态开始,对单个api(graph.facebook.com/IDENTITY/posts)的63个字段扩展调用序列将我们带到600呼叫速率限制。

答案 2 :(得分:0)

根据Facebook Docs

  

Graph API的字段扩展功能允许您将多个图形查询有效地“连接”到一个调用中。

因此,您的上述查询将代表Batch表单中的四个调用,以及Field Expanded表单中的一个调用。

正如我在上面的评论中所指出的:批量在一个请求中向Facebook发送多个但不一定相关的查询。字段扩展就像通过单个查询在SQL中进行连接一样。