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

C# 使网站上的自动完成更具响应性的技术,c#,javascript,autocomplete,C#,Javascript,Autocomplete,在我的网站的高级搜索屏幕中,大约有15个字段需要自动完成字段。 它们的内容都取决于彼此的值(因此,如果填写其中一个,另一个的内容将根据第一个的值而变化)。 大多数字段都有大量的可能性(至少有1000个条目) 当前,如果用户停止键入半秒钟,则进行ajax调用。这个ajax调用快速调用我的Lucene索引并返回一组JSon对象。这种方法本身确实很快,但是数据的连接和传输太慢了 如果我看其他网站(比如facebook),它们的自动完成是即时的。我想他们把可能的值放在HTML中,这样他们就不必做一次往返

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

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

如果我看其他网站(比如facebook),它们的自动完成是即时的。我想他们把可能的值放在HTML中,这样他们就不必做一次往返。但我担心,由于我正在处理大量数据,这不是一个选项


有什么想法吗?

您是返回所有可能的结果,还是只返回前10个json对象


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

您是返回所有可能的结果,还是仅返回前10个json对象


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

返回顶部的“X”结果,而不是整个列表,以减少选项数量?您可能还希望尝试并加入一些趋势分析,以跟踪用户从列表中选择的内容,这样您就可以尝试将最常用/最相关的“X”列为前一个。您可以先返回最相关的列表,如果他们仍在挣扎,则返回完整的列表。

返回顶部的“X”结果,而不是整个列表,以减少选项数量?您可能还希望尝试并加入一些趋势分析,以跟踪用户从列表中选择的内容,这样您就可以尝试将最常用/最相关的“X”列为前一个。你可以总是返回你最相关的列表,然后返回完整列表,如果它们仍然在挣扎。

< P>除了将结果集限制在一个顶级X集上,考虑对Ajax请求的响应启用缓存(这意味着使用GET和保持URL简单)。
令人惊讶的是,用户经常会退格,然后重新输入完全相同的内容。此外,通过允许公共和服务器端缓存,可以加快整个回合的TrUp时间。

< P>除了将结果集限制到顶级X集之外,还考虑启用对Ajax请求的响应的缓存(这意味着使用GET和保持URL简单)。
令人惊讶的是,用户经常会退格,然后重新输入完全相同的内容。另外,通过允许公共缓存和服务器端缓存,您可以加快整轮trup时间。

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

例如:

“这个名字很长的公司”变成了“这个名字很长的公司…”(你把点放在客户端的名字上——同样,传输最少的数据)

就JSON对象而言:

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

。。。其中“n”是名称,“v”是值。

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

例如:

“这个名字很长的公司”变成了“这个名字很长的公司…”(你把点放在客户端的名字上——同样,传输最少的数据)

就JSON对象而言:

{n: "This Here Company", v: "1"}
。。。其中“n”是名称,“v”是值

  • 仅返回前x个结果
  • 了解一些用户选择的趋势, 最好是以此为基础订购 自动地
  • 缓存每个URL和按键组合的结果, 这样你就不用往返了 如果您已经获取了结果 以前
  • 与所有用户共享此缓存 使用相同URL的自动完成 &按键组合
  • 当然,, 为服务器启用gzip压缩 JSON,并确保您正在设置 缓存头以缓存某些文件 时间时间取决于你的价格 自动完成响应的更改
  • 优化JSON以向下发送 最低限度。不要让人失望 任何你不需要的东西
  • 仅返回前x个结果
  • 了解一些用户选择的趋势, 最好是以此为基础订购 自动地
  • 缓存每个URL和按键组合的结果, 这样你就不用往返了 如果您已经获取了结果 以前
  • 与所有用户共享此缓存 使用相同URL的自动完成 &按键组合
  • 当然,, 为服务器启用gzip压缩 JSON,并确保您正在设置 缓存头以缓存某些文件 时间时间取决于你的价格 自动完成响应的更改
  • 优化JSON以向下发送 最低限度。不要让人失望 任何你不需要的东西
    • 将结果缓存在System.Web.Cache中
    • 使用Lucene缓存
    • 使用GET not POST作为IE缓存
    • 只获取结果的一个子集(如人们所建议的10个)
    • 尝试一个像样的第三方自动完成小部件,如
        • 将结果缓存在System.Web.Cache中
        • 使用Lucene缓存
        • 使用GET not POST作为IE缓存
        • 只获取结果的一个子集(如人们所建议的10个)
        • 尝试一个像样的第三方自动完成小部件,如

        我一开始确实犯了一个错误,但那是我修复的第一件事。我一开始确实犯了一个错误,但那是我修复的第一件事。可能有一些想法我没有尝试过。可能有一些想法我还没有尝试过