C# 为用户缓存唯一的自动建议列表,采取什么方法?

C# 为用户缓存唯一的自动建议列表,采取什么方法?,c#,asp.net,sql,xml,autosuggest,C#,Asp.net,Sql,Xml,Autosuggest,我正在制作一个应用程序(asp.net/c),它将自动提示用户键入的几个字段。每个用户最终都会建立自己的自动建议列表。每次他们添加一个项目,如果它是一个新词,它将被添加到他们的自动建议列表中,就像gmail一样 我想知道大多数人是怎么做的?每按一次键就给服务器打一个电话似乎不是很有效?我应该为每个用户创建一个包含一个条目的大型xml文件吗?每个用户的xml文件?我如何缓存它以提高效率 各种各样的问题,但我基本上寻找的是最佳实践。谢谢。我会将这些值存储在数据库中(您可能在其中存储他们的用户配置文件

我正在制作一个应用程序(asp.net/c),它将自动提示用户键入的几个字段。每个用户最终都会建立自己的自动建议列表。每次他们添加一个项目,如果它是一个新词,它将被添加到他们的自动建议列表中,就像gmail一样

我想知道大多数人是怎么做的?每按一次键就给服务器打一个电话似乎不是很有效?我应该为每个用户创建一个包含一个条目的大型xml文件吗?每个用户的xml文件?我如何缓存它以提高效率


各种各样的问题,但我基本上寻找的是最佳实践。谢谢。

我会将这些值存储在数据库中(您可能在其中存储他们的用户配置文件),并在用户登录时将这些值拉入ASP.NET会话。然后使用会话中的值作为自动完成值。这样,当他们登录时,您只需点击数据库一次。

Chuck Norris建议,根据您的JavaScript框架,您可以在进行服务器调用之前构建客户端检查,以查看字段中是否写入了给定数量的字符或单词。XML文件应该根据给定用户在数据库中输入的信息,使用自动建议词为该用户动态生成

根据您试图构建的应用程序,对特定数据库字段执行全文SQL查询可能更容易。为了提高性能,您可能会构建一个cookie,该cookie将被客户端的浏览器缓存,并让您的应用程序在执行完整的数据库查询之前检查更改或检查它是否存在

Chuck不建议使用会话变量,因为这样会降低应用程序的性能,因为它必须在内存中为每个用户保留这些自动建议值


Chuck想在他交出我的大脑之前知道你还需要什么。

数据存储
您应该将此信息存储在数据库中。创建一个或两个表来保存每个用户每个字段的此类信息

客户端查询
当用户开始键入文本字段时,可以从客户端(通过AJAX)查询数据库。如果您这样做,最好等到字段中至少有3(ish)个字符后再查询服务器以获取建议。这稍微减少了请求的数量以及客户端和服务器之间的通信量

我将此方法用于存在大量可能的自动建议点击的字段

缓存
如果使用此方法,则可以通过在某些情况下缓存响应来优化流程

假设仅在文本字段中包含3个字符后才触发查询,则可以缓存整个结果。添加到文本框中的任何其他字符都不会增加返回的结果数。因此,您可以继续筛选缓存的结果。但是,如果用户删除了一个字符,您可以刷新缓存,以确保具有最合适的自动建议点击率

服务器端预加载
在服务器端,收集所有这些数据并将其与页面请求一起发送。(您可以将其作为javascript数组下推到某个地方,该数组可以在文本字段的
onchange
事件中引用。这样,您就不必进行任何AJAX调用


这似乎更适合那些不会有大量可能的自动建议点击的字段。

我打赌你是这个板块上最弱的人…:)