3

1 人のユーザーが実行する最大 90 個の Open Graph アクションの大規模な集約では、オブジェクト URL のクエリ文字列部分が非常に長くなります (約 8KB)。

これは、サーバーがそのような長いクエリ文字列を処理するように構成されていないため、サーバーがクラッシュする原因となっています。また、許容されるクエリ文字列の最大長を既に増やしているため、これらの URL が FB の前にどれだけ大きくなるかわからないため、さらに増やすことは不可能だと感じています。それらを制限するために何かをします。

最近使用されたパラメーター fb_action_types がなくなり、代わりに action_type_map と action_object_map に集約内のすべての単一オブジェクトのマッピングが含まれているようです。

これらの URL を処理するには、サーバーのmaxQueryStringLengthをどれくらい大きくする必要がありますか? これほど大きくなった場合、POST で配信する必要がありますか?

この問題を認識できるように、 Facebook開発者サイトにバグを記録しました。

4

1 に答える 1

0

HTTP/1.1 の RFC 2616 に従って、URL は 2000 文字または 255 バイトを超えてはなりません (さまざまなブラウザーでの URL の最大長は? を参照してください)。

クエリ文字列が長いのはなぜですか? リクエストを 1 つの 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 に答える