在由单个用户执行的大约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
答案 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'});