【问题标题】:how to improve speed of ajax response in jquery autocompletor如何提高 jquery 自动完成器中 ajax 响应的速度
【发布时间】:2013-09-05 06:25:02
【问题描述】:

我已经用 PHP 实现了 Jquery 自动完成器。我注意到当我输入一个字母时,需要超过 2 秒才能给出结果。有没有办法提高响应速度?我们可以在 PHP 中使用应用程序缓存吗?

如果您需要更多信息,请告诉我。

【问题讨论】:

  • 嗨,把所有的数据都带上,放到 DOM 上。使用该数据自动完成
  • 有时,自动完成数据太大而无法做到这一点。
  • @Srihari Goud,你的意思是在页面加载时,我们从数据库中获取数据并将其放入 DOM 中,对吗?我的数据库中有 900 人,我认为这将是 cuewizchris 提到的问题。

标签: php performance jquery


【解决方案1】:

除非您在客户端 Javascript 代码中意外犯了某种错误,否则除了尝试提高服务器端脚本的响应速度之外,没有其他方法可以大大加快响应速度。

不幸的是,最有效的方法(在速度方面给出最好的结果)并不是很简单:不是每次自动完成器触发时都从数据库中获取结果,而是从某种基于内存的缓存中获取数据,例如 Memcached 或 Redis。这当然需要某种措施来保持缓存与数据库中的数据一致,这样您的自动完成功能就不会返回过时的结果。

【讨论】:

  • 感谢您提及Memcached and Redis。我会检查并通知您。
【解决方案2】:

使用自动完成进行搜索的最佳方法是设置 minLength=3 或 4,这样它就不必简单地搜索整个数据库,这会导致浏览器挂起并且也很耗时..

【讨论】:

    【解决方案3】:

    您可以使用浏览器localstorage 将数据从您的服务器保存一次。然后,每次您在自动完成字段中写入内容时,您都会查询此存储而不是 PHP 脚本。

    如果您有一个大型数据集并且不想将其加载到localstorage,您可以使用memcachedredis 来缓存您的数据库查询。

    此外,您可以缓存类以减少 PHP 脚本的生成时间。

    【讨论】:

    • localstorage 在 HTML 5 中支持浏览器。我会接受这个想法。
    【解决方案4】:

    使用预填充列表。 检查这个插件http://jqueryui.com/autocomplete/

    【讨论】:

    • 这里我无法将数据存储在预先填充的列表中,因为数据存储在数据库中并且它总是不断更新。
    猜你喜欢
    • 2023-04-02
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 2010-10-14
    • 2017-03-03
    • 1970-01-01
    相关资源
    最近更新 更多