使用 AJAX 的最有效搜索方法



好的,所以我开始研究我网站的搜索功能,我开始编写代码,中途我意识到如果说 100 个人同时搜索某些东西,就会有很多开销。由于我的 ajax 可以每keyup调用一次,这意味着对于这 100 个人,每次他们在搜索框中输入内容时,它都会运行一个查询,我很确定这是非常低效的。

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

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

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

我使用 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文件很快就会变得无法管理。

让auto_complete更快

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

最新更新