C# 使网站上的自动完成更具响应性的技术
在我的网站的高级搜索屏幕中,大约有15个字段需要自动完成字段。C# 使网站上的自动完成更具响应性的技术,c#,javascript,autocomplete,C#,Javascript,Autocomplete,在我的网站的高级搜索屏幕中,大约有15个字段需要自动完成字段。 它们的内容都取决于彼此的值(因此,如果填写其中一个,另一个的内容将根据第一个的值而变化)。 大多数字段都有大量的可能性(至少有1000个条目) 当前,如果用户停止键入半秒钟,则进行ajax调用。这个ajax调用快速调用我的Lucene索引并返回一组JSon对象。这种方法本身确实很快,但是数据的连接和传输太慢了 如果我看其他网站(比如facebook),它们的自动完成是即时的。我想他们把可能的值放在HTML中,这样他们就不必做一次往返
它们的内容都取决于彼此的值(因此,如果填写其中一个,另一个的内容将根据第一个的值而变化)。
大多数字段都有大量的可能性(至少有1000个条目) 当前,如果用户停止键入半秒钟,则进行ajax调用。这个ajax调用快速调用我的Lucene索引并返回一组JSon对象。这种方法本身确实很快,但是数据的连接和传输太慢了 如果我看其他网站(比如facebook),它们的自动完成是即时的。我想他们把可能的值放在HTML中,这样他们就不必做一次往返。但我担心,由于我正在处理大量数据,这不是一个选项
有什么想法吗?您是返回所有可能的结果,还是只返回前10个json对象
我注意到很多人将大量结果发送回屏幕,但只显示前几个结果。通过返回少量结果,您可以减少数据传输。您是返回所有可能的结果,还是仅返回前10个json对象
我注意到很多人将大量结果发送回屏幕,但只显示前几个结果。通过发送少量结果,您可以减少数据传输。返回顶部的“X”结果,而不是整个列表,以减少选项数量?您可能还希望尝试并加入一些趋势分析,以跟踪用户从列表中选择的内容,这样您就可以尝试将最常用/最相关的“X”列为前一个。您可以先返回最相关的列表,如果他们仍在挣扎,则返回完整的列表。返回顶部的“X”结果,而不是整个列表,以减少选项数量?您可能还希望尝试并加入一些趋势分析,以跟踪用户从列表中选择的内容,这样您就可以尝试将最常用/最相关的“X”列为前一个。你可以总是返回你最相关的列表,然后返回完整列表,如果它们仍然在挣扎。 < P>除了将结果集限制在一个顶级X集上,考虑对Ajax请求的响应启用缓存(这意味着使用GET和保持URL简单)。
令人惊讶的是,用户经常会退格,然后重新输入完全相同的内容。此外,通过允许公共和服务器端缓存,可以加快整个回合的TrUp时间。< P>除了将结果集限制到顶级X集之外,还考虑启用对Ajax请求的响应的缓存(这意味着使用GET和保持URL简单)。
令人惊讶的是,用户经常会退格,然后重新输入完全相同的内容。另外,通过允许公共缓存和服务器端缓存,您可以加快整轮trup时间。返回前N个条目是一种很好的方法。但是如果您想要/必须返回所有数据,我会尝试限制发送的数据和JSON对象本身 例如: “这个名字很长的公司”变成了“这个名字很长的公司…”(你把点放在客户端的名字上——同样,传输最少的数据) 就JSON对象而言:
{n: "This Here Company", v: "1"}
。。。其中“n”是名称,“v”是值。返回前n个条目是一个好方法。但是如果您想要/必须返回所有数据,我会尝试限制发送的数据和JSON对象本身 例如: “这个名字很长的公司”变成了“这个名字很长的公司…”(你把点放在客户端的名字上——同样,传输最少的数据) 就JSON对象而言:
{n: "This Here Company", v: "1"}
。。。其中“n”是名称,“v”是值
- 将结果缓存在System.Web.Cache中
- 使用Lucene缓存
- 使用GET not POST作为IE缓存
- 只获取结果的一个子集(如人们所建议的10个)
- 尝试一个像样的第三方自动完成小部件,如
- 将结果缓存在System.Web.Cache中
- 使用Lucene缓存
- 使用GET not POST作为IE缓存
- 只获取结果的一个子集(如人们所建议的10个)
- 尝试一个像样的第三方自动完成小部件,如