c# - 使网站上的自动完成更具响应性的技术

标签 c# javascript autocomplete

在我网站的高级搜索屏幕中,大约有 15 个字段需要自动完成字段。
它们的内容都依赖于彼此的值(所以如果一个被填充,另一个的内容将根据第一个的值而改变)。
大多数字段都有大量的可能性(至少有 1000 个条目)。

当前,如果用户停止输入半秒钟,则进行 ajax 调用。这个 ajax 调用快速调用了我的 Lucene 索引并返回了一堆 JSon 对象。该方法本身确实很快,但是数据的连接和传输太慢了。

如果我查看其他网站(比如 facebook),它们的自动完成是即时的。我认为他们将可能的值放在他们的 HTML 中,因此他们不必进行往返。但我担心我要处理的数据量很大,这不是一个选择。

有什么想法吗?

最佳答案

  1. 仅返回前 x 个结果。
  2. 了解用户选择的一些趋势, 并以此为基础进行排序,最好 自动。
  3. 缓存每个 URL 和击键组合的结果, 这样你就不必往返 如果你已经获取了结果 之前。
  4. 与所有人共享此缓存 使用相同 URL 的自动完成 & 击键组合。
  5. 当然, 启用 gzip 压缩 JSON,并确保您正在设置您的 缓存 header 缓存一些 时间。时间取决于你的费率 自动完成响应的更改。
  6. 优化 JSON 以发送 最低限度。不要向下发送 任何你不需要的东西。

关于c# - 使网站上的自动完成更具响应性的技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/625432/

相关文章:

C# Winforms | C#表格边框厚度

c# - 是否可以在 C# 6.0 中创建 'self-initializing' 字典扩展方法?

c# - 从 2 个下拉列表中获取值的 Controller 操作

c# - 应该如何自定义 ASP.Net Identity

javascript - 在 mousemove 上旋转多组形状

javascript - 在 JavaScript 中存储来自 dom 元素的事件监听器

javascript - 分离标签的插件(如 stackoverflow 的输入标签界面)

javascript - 谷歌地图 v3 : Define overlay(s) for use in multiple maps on same page

c - 如何在telnet客户端实现tab补全

javascript - Cloud9 中多个 js 文件的自动完成