加速一个可以发出许多Facebook API调用的应用程序



我有一个简单的应用程序,该应用程序从Facebook API中获取用户的完整供稿,以便对他或她在网站上写的单词数量进行计算。

在他或她进行身份验证后,该页面对/me/feed?limit100进行了图形调用,并计算响应次数及其日期。如果响应中有一个"下一个"光标,则它将下一个URL ping,看起来像这样:

https://graph.facebook.com/[UID]/feed?limit=100&until=1386553333

等等,直到我们达到用户加入Facebook的时间。该功能看起来像这样:

var words = 0;
var posts = function(callback, url) { 
    url = url || '/me/posts?limit=100';
    FB.api(url, function(response) {
        if (response.data) {
            response.data.forEach(function(status) {
                if (status.message) {
                    words += status.message.split(/ /g).length;
                }
            });
        }
        if (response.paging && response.paging.next) {
            posts(callback, response.paging.next);
        } else {
            alert("You wrote " + words + " on Facebook!");
        }
    });
}

这对于拥有多达4,000个状态的人来说,这是可以的,但是对于具有10,000个终身更新或更多更新的权力用户来说,它确实开始爬网。API的每个响应仅为25kb,但我无法弄清楚什么最紧张。

我将每个状态中的单词数量添加到我的总单词计数中后,我是否需要专门销毁响应对象以免超载内存?

另外,递归深度是问题吗?我们实际上在谈论为Power用户致电API的100个电话。我已经尝试了提高每个呼叫的极限以获取更大的块,但似乎并没有巨大的不同。

谢谢。

所以,我猜是使用JS SDK进行此操作,这意味着这在浏览器中运行...您是否尝试在Chrome中运行此操作,然后观看网络监视器到查看响应时间等。?

有100个请求,这也意味着数据对象/JSON的大小必须大约为2.5MB,对于某些浏览器/机器来说,我猜这可能很具有挑战性。另外,从FB获取数据必须花费相当长的时间。用户同时看到了什么?

您是否考虑过在服务器端的后端实现此功能,然后将结果传递到前端?

对于Exmple使用Nodejs与Socketio一起在服务器端进行并动态更新单词?

最新更新