3

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

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

最近使用的参数 fb_action_types 似乎消失了,取而代之的是 action_type_map 和 action_object_map 包含聚合中每个对象的映射。

为了处理这些 URL,我们希望增加服务器的maxQueryStringLength多少?当它们变得这么大时,它们是否应该在 POST 中交付?

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

4

1 回答 1

0

根据 HTTP/1.1 的 RFC 2616,URL 不应超过 2000 个字符或 255 个字节(查看不同浏览器中 URL 的最大长度是多少?)。

为什么你的查询字符串这么长?您是否将请求打包或嵌套到单个 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'});
于 2012-09-25T17:52:51.530 回答