我期待优化我的Facebook应用程序。
今天,我让四个图形API调用批处理电话:
/me
/me/friends
/me/likes
/me/feed
如果我使用范围扩大这样的更改为一个单一的图形API调用:
/me?fields=id,name,username,friends,likes,feed
请问,现在算作对API的一击,而不是四个速率限制的目的呢?
我期待优化我的Facebook应用程序。
今天,我让四个图形API调用批处理电话:
/me
/me/friends
/me/likes
/me/feed
如果我使用范围扩大这样的更改为一个单一的图形API调用:
/me?fields=id,name,username,friends,likes,feed
请问,现在算作对API的一击,而不是四个速率限制的目的呢?
不幸的是,在该批次的每个呼叫都算作一个API调用,它以一个批次中称他们只是更快,因为这将是1个请求。 见在Facebook API文档在这里:
范围
我们目前限制其可以是一个批次到50的请求的数量,但该批次内的每个呼叫被用于计算API调用限制和资源限制的目的而分开计数。 例如,一个批次的10个API调用将计为10个通话和批量内的每个呼叫有助于以相同的方式CPU资源限制。
来源: https://developers.facebook.com/docs/reference/api/batch/
根据实际测试,我发现场扩展可以依靠下的速率限制多种用途。 例如,从一个安静的状态开始,63场展开调用一个API(graph.facebook.com/IDENTITY/posts)的顺序把我们带到600呼叫速率限制。
按照Facebook的文件 ,
图形API的领域扩展功能,可以让你有效地“加入”多图查询到一个单一的电话。
所以,你的查询上面将代表批形式四次调用,并在现场展开形式的呼叫。
正如我在上面评论指出:批处理发送多但并非必然相关的查询,以Facebook在单个请求。 野外拓展就像在做SQL通过一个单一的查询连接。