在我的网站的先进的搜索屏幕大约有15个领域,需要一个自动完成的领域。
其内容是所有根据每一方的价值(因此,如果一个被填满,其他的内容将改变第一个是值)。
大多数领域都有大量的可能性(1000的项目至少).

目前使阿贾克斯打电话,如果用户停止输入的一半。这个阿贾克斯呼叫做快速调用我的分类:设指数和返回一堆象的对象。该方法本身真的是快速的,但它是连接和传输数据就是太慢了。

如果我看看其他网站(说facebook),他们自动完成是即时的。我想他们把可能的价值在他们HTML,使他们不必做一个圆形的旅行。但我担心,与量的数据我处理,这不是一个选项。

任何想法?

有帮助吗?

解决方案

  1. 仅返回前x个结果。
  2. 了解用户选择的趋势, 并且最好是基于此的顺序 自动。
  3. 每个网址的缓存结果&击键组合, 这样你就不用往返了 如果你已经取得了结果 之前。
  4. 与所有人共享此缓存 使用相同URL的自动填充 &安培;击键组合。
  5. 当然, 启用gzip压缩 JSON,并确保您正在设置您的 缓存标头以缓存某些内容 时间。时间取决于您的费率 更改自动完成响应。
  6. 优化JSON以发送 最低限度。不要发送下来 你不需要的任何东西。

其他提示

您是返回所有可能性的结果还是仅返回前10个作为json对象。

我注意到很多人将大量结果发送回屏幕,但之后才显示前几个。通过发送少量结果,您可以减少数据传输。

返回顶部“X”结果,而不是整个清单,减少选项的数量?您可能还想尝试添加一些趋势来跟踪用户从列表中选择的内容,以便您可以尝试将顶部的“X”设置为“X”。最常用/最重要的。您可以随时返回最相关的列表,如果仍在苦苦挣扎,则返回完整列表。

除了限制设定的结果顶X组考虑启用缓存在答复阿贾克斯的请求(这意味着使用获得和保留URL简单).

它的令人惊讶的用户往往将backspace然后最终重新输入完全相同的内容。还通过允许公共和服务器的端高速缓存,你可以加快整体圆trup时间。

  • 缓的结果的系统。网。高速缓存
  • 使用一个分类:设高速缓存
  • 使用得到的不后即高速缓存这个
  • 只有抓住一个子集的结果(10人建议)
  • 尝试一种体面的第3次缔约方自动完成的部件喜欢的 唯一一个

返回前N个条目是一个很好的方法。但是如果你想/必须返回所有数据,我会尝试限制发送的数据和JSON对象本身。

例如:

“此公司名称较长”成为“This Here Company ...” (您将点放在客户端名称中 - 再次;传输最少的数据)。

就JSON对象而言:

{n: "This Here Company", v: "1"}

......其中“n”将是名称和“v”将是价值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top