4

サーバーの負荷を軽減し、応答時間を増やすために、LDAP クエリで最初の N 件の結果のみを取得する良い方法はありますか?

ユースケースは、たとえば、ユーザーがこれまでに入力した文字で始まるすべての結果を見つけるプログレッシブ AJAX ベースの名前ピッカー (クエリ サイズをバッキング LDAP ディレクトリに制限する LDAP to HTTP ゲートウェイ経由) です。

.NET 4.5 System.DirectoryServices.Protocols を使用したサンプル コードはありがたいですが、必須ではありません。実際のプロトコル要件が何であるかがわかれば、要求の送信方法を理解できるからです。

4

3 に答える 3

3

それがまさに Java PagedResultsControlの目的です。.NETにも1 つあります。これらはプロトコルを実装し、API を提供するだけです。

于 2013-04-14T00:18:08.103 に答える
0

あなたの特定の目的(オートコンプリートの提案)のために、ページングされた結果の代わりにldap sizelimitを使用します。違いは次のとおりです。

サイズ制限

最初の xx 個のオブジェクトに関心があります。あなたは残りを気にしませんし、残りは必要ありません。

ページングされた結果

すべてのオブジェクトに関心がありますが、 1 ページあたり xx 個のオブジェクトのバッチ/ページでそれらを取得したいと考えています。最終的に、サーバーからすべてのオブジェクトを取得することが必要になる場合があります。

ここでの明らかなオーバーヘッドは、ページングされた結果では、サーバーが検索の状態を記憶し、次のページを要求したときに適切に再開する必要があることです。これは通常、オートコンプリート リストには不要であるため (必要に応じてオートコンプリート リストをさらに拡張するオプションが必要な場合を除きます)、ページ化された結果を使用するよりもサイズ制限を使用して、サーバーの余分な負荷を節約できます。

私は .NET プログラマーではありませんが、Google がこれを見つけました。興味があるかもしれません:
system.directoryservices.directorysearcher.sizelimit

詳細については、RFC ページも参照してください ( sizelimit を検索してください):
rfc1777

于 2013-04-15T00:49:55.057 に答える