1

我在评论中问了这个问题,但我认为我不应该问第二个问题来评论第一个问题。我有 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

在采用任何特定解决方案之前,您需要弄清楚您的性能瓶颈在哪里。这将帮助您在哪里需要进行更改/修复以增加查找。

您需要检查两个方面(假设您有快速连接):

  1. 服务器端:确保您的服务器快速返回调用。尝试返回一个小的字符串数组(不要执行任何后端数据检索)。如果性能显着提高,则意味着您的服务/数据层代码存在问题,您需要优化其性能。

  2. 客户端:客户端的最大因素之一是CompletionInterval属性。Visual Studio 设置的默认值为 1000 毫秒。我把它改成10,它变得更快了。

就我而言,瓶颈在于控制配置本身。我的服务器端已经很快了,因为我使用trie 结构进行快速后端数据查找和检索。我还返回了一小部分记录,打开了客户端缓存。最大的因素是CompletionInterval

于 2012-09-03T04:51:56.987 回答