我在评论中问过这个问题,但我认为我不应该在第一个问题上提出第二个问题。我有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
}
答案 0 :(得分:1)
编辑CompletionInterval,CompletionSetCount和MinimumPerfixLength几乎没有任何内容。
看起来这是一个非常常见的问题--AJAX TextboxCompleteExtender非常慢,因为它每次都会查询数据 - CodePlex如果有其他人遇到这个问题,它有一个很棒的开源解决方案。
答案 1 :(得分:0)
在进入任何特定解决方案之前,您需要弄清楚性能瓶颈在哪里。这将帮助您在何处进行更改/修复以增加查找。
您需要检查两个方面(假设您有快速连接):
服务器端: 确保您的服务器快速返回呼叫。 尝试返回一小组字符串(不要执行任何后端数据检索)。如果性能显着提高,则表示您的服务/数据层代码存在问题,需要优化其性能。
客户端:客户端最重要的因素之一是CompletionInterval
属性。 Visual Studio设置的默认值为1000毫秒。我将它改为10,它变得更快。
就我而言,瓶颈在于控制配置本身;我的服务器端已经很快,因为我使用trie structure进行快速后端数据查找和检索。
我还返回了一小组记录,打开了客户端缓存。最重要的因素是CompletionInterval
。