我正在寻找优化我的 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/
根据实际测试,我发现字段扩展可以在速率限制下进行多次使用。例如,从安静状态开始,对单个 api (graph.facebook.com/IDENTITY/posts) 的 63 次字段扩展调用序列将我们带到了 600 次调用速率限制。
根据Facebook 文档,
Graph API 的字段扩展功能允许您有效地将多个图形查询“加入”到单个调用中。
因此,您上面的查询将代表批处理表单中的四个调用,以及字段扩展表单中的一个调用。
正如我在上面的评论中指出的那样:批处理在单个请求中向 Facebook 发送多个但不一定相关的查询。字段扩展就像在 SQL 中通过单个查询进行连接。