我正在对我的网络应用程序进行一些基准测试,并注意到Facebooks API的响应比Twitters慢很多。
**为了记录,我使用twitter-async库进行Twitter API集成,Facebook使用自己的库here
使用Twitter库我可以保存oAuth令牌&秘密,我然后使用这些来创建一个实例和拨打电话,简单。对于Facebook,除非我要求offline_permission,否则我必须存储oAuth代码并在每次用户登录我的应用程序时重新创建oAuth访问令牌。
鉴于以上情况,我可以:
以 0.02秒检索Twitter用户时间轴。
以 1.16秒获取FB oAuth访问代码,然后我可以 2.31秒获取用户详细信息,总计 3.47秒用户详细信息。
这些统计数据来自于Facebook在其PHP API库中提供的功能。我也尝试实现我自己的CURL函数来通过请求获取这些信息,结果并没有那么好。
这是其他人使用Facebook API获得的响应时间吗?
除了请求离线许可和存储永久访问令牌外,我还能如何加快这些请求,是我的问题还是Facebook?
谢谢,
克里斯
答案 0 :(得分:7)
我也有Facebook API非常慢的经验。我相信facebook PHP API在API调用的情况下不仅仅包含CURL,所以有意义的是这并没有提高速度。
我在画布页面上工作,这意味着对于现有用户,我会在他/她进入时获得访问令牌和fb_UID。首先,我做了一个/我的图形调用,有时是/我/朋友。第一个需要0.6秒,第二个通常多一点。因此,在这种情况下,我可以(在某种程度上)确认您的发现。
这就是为什么我现在已经切换到在本地存储重要内容并仅在需要时更新它(实时更新API)。基本上,我在“正常”操作期间不需要任何API调用。
我意识到您可能正在将FB集成到您自己的页面上,并且可能使用的信息不仅仅是名称,fb-UID&朋友们,这个解决方案并没有完全回答你的问题。但也许它仍然可以作为拼图的一小部分;)
我期待着对此的其他观点!
答案 1 :(得分:0)
我的应用程序从Facebook调用多个URL。确实需要一些时间:/ 这就是为什么我决定编写一个将结果存储在$ _SESSION中的函数,以便稍后再使用它,以及时间戳来查看数据是否太旧。
这并不能解决实际问题,它只是让你不得不继续抓取它。
我喜欢为最终用户体验做什么,将它们转发到带有.gif的页面 - 然后让javascript请求实际获取数据的页面。这样,用户仍然在一个加载页面上,有一个很好的GIF可以盯着看,直到下一页准备就绪。