在客户端或服务器上处理自动完成/建议是否更好?

时间:2012-09-27 20:30:36

标签: sql-server json autocomplete wildcard

我正在构建一个网络应用程序,它将在最终用户输入信息时使用自动完成/建议。这将专门用于输入国家,省,城市信息。

在每次击键时对数据库进行外卡搜索:

SELECT CityName 
FROM City
WHERE CityName LIKE '%@CityName%'

将指定省份的所有城市列表返回给客户,让客户进行匹配:

SELECT CityName 
FROM City
WHERE ProvinceID = @ProvinceID

这些将通过对Web服务的ajax调用作为JSON字符串返回给客户端。我的想法是javascript能够通过JSON处理100多个条目的列表比数据库能够进行通配符搜索更快,但我喜欢社区输入。

3 个答案:

答案 0 :(得分:3)

过去,我使用过两种技术。如果您正在谈论100个左右的条目,并假设每个条目非常小,那么在客户端进行自动完成过滤器可能会更快。这将为您提供更好的响应时间(尽管可能忽略不计),并将减少服务器的负载。

谷歌实际上是在用户输入时进行实时搜索,从用户的角度来看,它似乎非常敏感。这是一个必须在服务器端执行查询的示例,因为数据集太大而无法传输到客户端。

您可能要做的一件事是等到用户在从服务器获取列表之前键入两次击键,从而最初缩小结果范围。当然,这会增加复杂性 - 如果用户更改了前两次击键,您需要刷新列表。

答案 1 :(得分:2)

我们使用ajax自动完成控件实现了相同的功能我们在从服务器获取列表之前等待用户键入三次击键我们还没有在客户端进行任何编码我们刚刚分配了web服务方法,它将返回列表返回到ajax控件及其启动工作

答案 2 :(得分:1)

最终用户的兴趣是,处理这个客户端总是更好。

Telerik自动完成控制器允许两种方式。

当然,在加载下,客户端自动完成可能会使应用程序爬行。