【问题标题】:Most efficient search method using AJAX?使用 AJAX 最有效的搜索方法?
【发布时间】:2014-01-22 00:58:07
【问题描述】:

好的,所以我开始研究我网站的搜索功能,并开始编写代码,并且在中途我意识到如果假设有 100 人在同时。而且由于我的 ajax 可能会被每个 keyup 调用一次,这意味着对于这 100 个人来说,每次他们在搜索框中输入内容时,它都会运行一个我敢肯定效率很低的查询。

因此,我决定最好创建一个 cron 作业并让它运行一个脚本,该脚本每 10-20 分钟运行一次并从我的数据库中获取所有行,并创建一个 JSON 文件。这样,我的 ajax 调用现在将指向一个包含所有已预取结果的文件。然后,我找到了搜索匹配项。

我想知道是否有更有效或更好的方法来做到这一点?

【问题讨论】:

  • "是否有更有效或更好的方法来做到这一点?" - 数据库和缓存....

标签: jquery json search


【解决方案1】:

我建议在每次按键之间为您的通话添加一个简单的延迟。

我使用 250 毫秒,因为这是按键之间的合理时间。

在每次按键时启动计时器并在每次按键时重新启动它 - 然后在计时器功能中进行调用。

//pseudo code

on key press - start timer function - pass in current letters

if key pressed - reset timer function - pass in current letters

key not pressed for 250ms - function runs to timer end - fire off ajax call.

这是效率、可用性和可维护性之间的最佳平衡 - 如果您的网站增长(以及数据传输量等),您的 JSON 文件很快就会变得无法管理

【讨论】:

    【解决方案2】:

    让 auto_complete 更快

    1. 在 ajax 响应中打开 gzib 压缩以减小响应大小
    2. 为搜索查询中使用的列添加索引
    3. 在ajax中添加缓存头以减少对web服务器的请求,缓存应该有一个方便的过期时间
    4. 为最近最流行的请求添加服务器缓存以减少数据库连接数
    5. 使用完全构造的 HTML 作为 ajax 响应而不是 json 数据,以防止浏览器重构 html DOM

    【讨论】:

      猜你喜欢
      • 2018-03-29
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      • 1970-01-01
      • 2010-09-20
      • 2012-03-24
      相关资源
      最近更新 更多