使用AJAX最有效的搜索方法?

时间:2014-01-04 09:28:19

标签: jquery json search

好的,所以我开始研究我的网站的搜索功能,然后我开始对其进行编码,并且我意识到如果有100个人在搜索某些内容时会有很多开销。同时。而且因为我的ajax可以被称为每个keyup,这意味着对于那100个人来说,每次他们在搜索框中键入内容时,它都会运行一个查询,我很确定这个查询非常低效。

所以,我决定最好做一个cron作业并让它运行一个脚本,每隔10-20分钟运行并从我的数据库中取出所有行,并创建一个JSON文件。有了它,我的ajax调用现在将是一个包含所有已经预取的结果的文件。然后,我发现搜索匹配。

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

2 个答案:

答案 0 :(得分:2)

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

我使用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文件将很快变得无法管理(以及数据传输数量等)。

答案 1 :(得分:0)

加快auto_complete

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