在我网站的高级搜索屏幕中,大约有 15 个字段需要自动完成字段。
它们的内容都依赖于彼此的值(所以如果一个被填充,另一个的内容将根据第一个的值而改变)。
大多数字段都有大量的可能性(至少有 1000 个条目)。
当前,如果用户停止输入半秒钟,则进行 ajax 调用。这个 ajax 调用快速调用了我的 Lucene 索引并返回了一堆 JSon 对象。该方法本身确实很快,但是数据的连接和传输太慢了。
如果我查看其他网站(比如 facebook),它们的自动完成是即时的。我认为他们将可能的值放在他们的 HTML 中,因此他们不必进行往返。但我担心我要处理的数据量很大,这不是一个选择。
有什么想法吗?
最佳答案
- 仅返回前 x 个结果。
- 了解用户选择的一些趋势, 并以此为基础进行排序,最好 自动。
- 缓存每个 URL 和击键组合的结果, 这样你就不必往返 如果你已经获取了结果 之前。
- 与所有人共享此缓存 使用相同 URL 的自动完成 & 击键组合。
- 当然, 启用 gzip 压缩 JSON,并确保您正在设置您的 缓存 header 缓存一些 时间。时间取决于你的费率 自动完成响应的更改。
- 优化 JSON 以发送 最低限度。不要向下发送 任何你不需要的东西。
关于c# - 使网站上的自动完成更具响应性的技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/625432/