在我网站的高级搜索屏幕中,大约有15个字段需要自动填充字段
它们的内容全部取决于彼此的价值(如果填写了一个,那么另一个的内容将根据第一个的值而改变)。
大多数领域都有很多可能性(至少1000个条目)。
如果用户停止输入半秒,则当前进行ajax调用。这个ajax调用快速调用我的Lucene索引并返回一堆JSon对象。方法本身非常快,但是数据的连接和传输太慢了。
如果我查看其他网站(比如说facebook),他们的自动填充功能就是即时的。我认为他们将可能的值放在他们的HTML中,因此他们不必进行往返。但我担心我正在处理的数据量,这不是一个选择。
有什么想法吗?
答案 0 :(得分:5)
答案 1 :(得分:4)
您是返回所有可能性的结果还是仅返回前10个作为json对象。
我注意到很多人将大量结果发送回屏幕,但之后才显示前几个。通过发送少量结果,您可以减少数据传输。
答案 2 :(得分:2)
返回顶部的“X”结果,而不是整个列表,以减少选项的数量?您可能还想尝试添加一些趋势来跟踪用户从列表中选择的内容,这样您就可以尝试将顶级“X”设置为最常用/最常用的。您可以随时返回最相关的列表,如果仍在苦苦挣扎,则返回完整列表。
答案 3 :(得分:2)
除了将结果集限制在顶部X集之外,还要考虑对AJAX请求的响应启用缓存(这意味着使用GET并保持URL简单)。
令人惊讶的是用户经常退格然后最终重新输入完全相同的内容。此外,通过允许公共和服务器端缓存,您可以加快整个Round-trup时间。
答案 4 :(得分:1)
答案 5 :(得分:0)
返回前N个条目是一个很好的方法。但是如果你想/必须返回所有数据,我会尝试限制发送的数据和JSON对象本身。
例如:
“这里有一个长名称的公司”变成“这里公司......”(你把点放在客户端名称 - 再次;转移最少的数据)。
就JSON对象而言:
{n: "This Here Company", v: "1"}
......其中“n”是名称,“v”是值。