1

コメントでこれを尋ねましたが、最初の質問にコメントして2番目の質問をするべきではないと思います. 私は AutoCompleteExtender を持っていますが、非常に遅いです.AutoCompleteExtender を埋めるためにリストを取得するメソッドは、毎回 API から XML を取得してクエリする必要があります。問題は私のメソッドです。このメソッド内では、SessonState、Cookie、同じページの静的メソッドの変数にもアクセスできないため、毎回 GET と Query に代わるものはありません。これは遅いですが、実際に持つ価値はありません。これを高速に実行するには、別の方法 (おそらく AJAX ツールキットを使用しない) が必要です。

[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
public static List<string> GetNames(string prefixText, int count)
 {
    //Code Here Takes long
 }
4

2 に答える 2

1

CompletionInterval 、 CompletionSetCount 、および MinimumPerfixLength を編集しても、ほとんど何も起こりません。

これは非常に一般的な問題のようです.AJAX TextboxCompleteExtenderは毎回データを照会するため非常に遅いです.CodePlexに、この問題に対する素晴らしいオープンソースソリューションがあります.

于 2012-05-06T00:45:20.807 に答える
0

特定のソリューションに進む前に、パフォーマンスのボトルネックがどこにあるかを把握する必要があります。これは、ルックアップを増やすためにどこで変更/修正を行う必要があるかを示します。

チェックする必要がある2つの側面があります(高速接続があると仮定します):

  1. サーバー側: サーバーがすぐに呼び出しを返すようにします。文字列の小さな配列を返してみてください (バックエンド データの取得を実行しないでください)。パフォーマンスが大幅に向上した場合は、サービス/データ レイヤー コードに問題があり、そのパフォーマンスを最適化する必要があることを意味します。

  2. クライアント側: クライアント側の最大の要因の 1 つはCompletionIntervalプロパティです。Visual Studio によって設定される既定値は 1000 ミリ秒です。10 に変更したところ、はるかに高速になりました。

私の場合、ボトルネックは制御構成自体にありました。バックエンド データの検索と取得を高速化するためにトライ構造を使用したため、サーバー側はすでに高速でした。また、レコードの小さな配列を返し、クライアント側のキャッシュをオンにしました。最大の要因はCompletionIntervalしかしでした。

于 2012-09-03T04:51:56.987 に答える