【问题标题】:AutoCompleteExtender very slowAutoCompleteExtender 非常慢
【发布时间】:2012-05-05 05:10:49
【问题描述】:

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

【问题讨论】:

  • 您是否在扩展器CompletionIntervalCompletionSetCountMinimumPrefixLength 上玩过以下任何属性。也许您可以找到合适的平衡点,让它可用​​

标签: c# performance autocompleteextender


【解决方案1】:

编辑 CompletionInterval 、 CompletionSetCount 和 MinimumPerfixLength 几乎没有任何效果。

看起来这是一个非常常见的问题 - AJAX TextboxCompleteExtender 非常慢,因为它每次都查询数据 - CodePlex 有一个很棒的开源解决方案来解决这个问题,如果其他人遇到它。

【讨论】:

    【解决方案2】:

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

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

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

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

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

    【讨论】:

    • 您能否编辑以解决以下问题 - #1:您是否试图建议制作一个模拟方法来提供预先计算的输入? #2:尝试与问题的相关性是什么? “返回小记录数组”是什么意思?
    猜你喜欢
    • 2015-05-22
    • 1970-01-01
    • 2017-12-12
    • 2015-06-14
    • 2013-05-14
    • 2021-05-24
    • 1970-01-01
    • 2013-06-24
    • 2016-06-14
    相关资源
    最近更新 更多