技术来使自动完成,在网站上更加反应灵敏
-
05-07-2019 - |
题
在我的网站的先进的搜索屏幕大约有15个领域,需要一个自动完成的领域。
其内容是所有根据每一方的价值(因此,如果一个被填满,其他的内容将改变第一个是值)。
大多数领域都有大量的可能性(1000的项目至少).
目前使阿贾克斯打电话,如果用户停止输入的一半。这个阿贾克斯呼叫做快速调用我的分类:设指数和返回一堆象的对象。该方法本身真的是快速的,但它是连接和传输数据就是太慢了。
如果我看看其他网站(说facebook),他们自动完成是即时的。我想他们把可能的价值在他们HTML,使他们不必做一个圆形的旅行。但我担心,与量的数据我处理,这不是一个选项。
任何想法?
解决方案
- 仅返回前x个结果。
- 了解用户选择的趋势, 并且最好是基于此的顺序 自动。
- 每个网址的缓存结果&击键组合, 这样你就不用往返了 如果你已经取得了结果 之前。
- 与所有人共享此缓存 使用相同URL的自动填充 &安培;击键组合。
- 当然, 启用gzip压缩 JSON,并确保您正在设置您的 缓存标头以缓存某些内容 时间。时间取决于您的费率 更改自动完成响应。
- 优化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”将是价值。