从大型聚合中打开图表引用URL的时间非常长

时间:2012-07-27 09:07:44

标签: facebook query-string opengraph aggregation

在由单个用户执行的大约90个Open Graph操作的聚合中,对象URL的查询字符串部分非常长(大约8KB)。

这导致我们的服务器崩溃,因为它们没有配置为处理这么长的查询字符串,并且已经增加了我们允许的最大查询字符串长度,我们觉得它进一步增加是不可行的,因为我们不知道这些URL有多大在FB做某事来限制它们之前去。

最近使用的参数fb_action_types似乎消失了,在其中,action_type_map和action_object_map包含聚合中每个单个对象的映射。

为了处理这些网址,我们期望增加服务器的 maxQueryStringLength 有多大?他们应该在这么大的时候在POST中交付吗?

我在Facebook开发者网站上记录了一个错误,以便他们了解此问题: http://developers.facebook.com/bugs/391678330885746?browse=search_50125698681389e40279519

1 个答案:

答案 0 :(得分:0)

根据HTTP / 1.1的RFC 2616,URL不应超过2000个字符或255个字节(请查看What is the maximum length of a URL in different browsers?)。

为什么您的查询字符串这么长?您是否将请求打包或嵌套到单个URL中?使用激烈的场扩展可能吗?

我建议批量处理您的请求:

http://developers.facebook.com/docs/reference/api/batch/

速度非常快,您可以同时发送50个请求。

举个例子:

var batch = new Array();
batch.push({ "method": "GET", "relative_url": "me/friends?limit=5"});
batch.push({ "method": "GET", "relative_url": "me/likes?limit=5"});
var batchData = { 'access_token': access_token, 'batch': JSON.stringify(batch) };
var BASEURL = 'https://graph.facebook.com/';
$.ajax({type: 'POST', url: BASEURL, data: batchData, success: requestSucceeded, error: requestFailed, dataType: 'JSON'});