图形API与FQL的速度更快?

nat*_*ate 6 facebook facebook-fql facebook-graph-api

只是想知道什么时候只需要基本的GET/POST.(即获取用户个人资料的简单内容,而不是像从每张专辑中获取图片那样复杂的事情)

哪个更快?图表或FQL.

我知道FQL比图形更新,但不确定它是否更有效.

Jui*_*ter 17

它绝不像这样.虽然你可以从他们的意图获得相同的数据(在某些情况下)是完全不同的:FQL是一种查询语言,Graph是一种API.

如果使用新的JS SDK,则调用FQL查询是一个Graph API调用本身...

您可以(并且可能应该,如果您担心真正的比较而不是理论推测)比较返回相同数据的调用速度,但您应该考虑以下事项:

  • Graph API在数据过滤条件和数据聚合方面仍然很糟糕
  • FQL无法为您提供当今应用程序所需的太多功能(如实时更新)
  • Graph API具有批量调用的能力,这可能会加速很多事情,这也可以用来调用fql.query和fql.multiquery(有点麻烦的方式).
  • 图形API在数据过滤时摇摆不定 Field Expansion

请考虑以下示例来自FQL文档,子查询,用于获取活动用户和朋友的所有用户信息:

SELECT uid, name, pic_square FROM user WHERE uid = me()
OR uid IN (SELECT uid2 FROM friend WHERE uid1 = me())
Run Code Online (Sandbox Code Playgroud)

使用单个Graph API调用无法实现这一点.(见更新)

一旦定义了所需的数据子集,就可以根据自己的要求选择合适的检索方法.

顺便说一句,FQL比Graph早得多,我们把它放在FBML(rip)和FBJS(rip)之外

更新:

图谱API批处理请求提供方法并指定请求中的操作之间的依赖关系.例如,可以在对Graph API的单次调用中实现与上述相同的样本

POST https://graph.facebook.com/
POST Data:
batch=[
  {
    "method": "GET",
    "name" : "get-friends",
    "relative_url": "me/friends?fields=id",
  },
  {
    "method": "GET",
    "relative_url": "?ids={result=get-friends:$.data.*.id}&fields=id,name,picture"
  }
]
Run Code Online (Sandbox Code Playgroud)

更新2:
截至2012年8月30日,Graph API还支持Field Expansion作为额外(非常强大的)数据检索机制(包括嵌套数据)