【问题标题】:How to determine the cause of AJAX delay on my site?如何确定我的网站上 AJAX 延迟的原因?
【发布时间】:2015-05-17 12:24:41
【问题描述】:

我的网站上有一个 AJAX 搜索工具,当我在实时网站中搜索某些内容时,直到结果出现(表格中的条目不超过 20 个)页面会在短时间内冻结,其他地方都无法点击在网站上,但它不会冻结计算机。我可以点击浏览器上的其他标签等。

我在 MySQL/InnoDB 中使用这个查询,运行需要 0.031 秒:

select * from members m where
    memberID LIKE '%$keyword%' OR
    memberName LIKE '%$keyword%' AND
    memberTypeID=2;

我认为这与与服务器的连接有点相关,与服务器的性能有点相关。我该如何改进?

我使用 Bootstrap 分页将所有数据放在一个分页表中,该表具有搜索、排序、页面、每页条目数量选项,所有这些都在客户端完成。

【问题讨论】:

  • 这是当前在您的本地计算机上运行的站点吗?如果进行搜索的繁重工作是将负载放在您自己的 CPU 上,请记住,一旦您上线,该负载将放在不同的服务器上,而且 CPU 很可能比您的开发机器的处理器更好。跨度>
  • 这短短的时间有多长?您正在运行的查询是什么导致它?您使用的是什么数据库服务器?
  • halfer,不是我自己的CPU。它是一个实时服务器。查询类似于:“select * from members m where memberID LIKE '%$keyword%' OR memberName LIKE '%$keyword%' AND memberTypeID=2;”。我正在使用 MySQL 服务器和 php 服务器(都在同一台服务器上运行)引擎是 InnoDB ...
  • 运行需要多长时间,确切地说)?前面带有通配符的 LIKE 相对很慢,但如果您的表中只有 20 行,则不会。 (注意:在您的实时环境中的 MySQL 控制台中尝试此操作,它会为您计时)。
  • 当我在 MySQL Workbench 上运行 sql 时,查询耗时 0.031 秒。在网站上,冻结需要 2-3 秒。

标签: php ajax server


【解决方案1】:

没有准确的方法来准确衡量您的服务器应该有多强大,但您始终可以预测。

解决方案 1: 如果您使用复杂的数据库查询,您应该选择专用的强大服务器。

解决方案 2:您可以使用 ajax 异步调用数据库,以便其他内容继续加载并且不会挂起页面。

更多关于 AJAX 调用:Get data from mysql database using php and jquery ajax

【讨论】:

  • 我将专注于解决方案 2。您认为我可以从哪里开始学习这种“异步”ajax 调用?
  • 我刚刚发现ajax默认是异步的,我没有指定它是同步的。
  • 您可以使用link 或许多其他网络资源开始学习。
【解决方案2】:

主要取决于两件事。

  • Size of Website.( 每次有人打开网站,你的带宽 将被消耗)
  • MemorySQL 查询使用。(假设你有 一张表10万条记录,简单SELECT 查询不会消耗那么多,但是您的查询很复杂,包含 加入并且没有正确优化,那么它可能会消耗很多)

根据我的经验。 一个 2MB 的网站,有 4 个表和每个大约 50,000 条记录。如果您在小时内拥有少于 50 个用户,您能否在共享主机上正常工作。

除此之外,您需要虚拟专用服务器。 (这不是固定的少数网站提供非常强大的共享主机,但价格也很高)

在您的情况下,我猜您正在使用免费托管或本地主机。

【讨论】:

  • 感谢您的信息,我会考虑您提供的想法。它不是 localhost,但我可以说它是一个共享主机,并且可以假设它不是那么强大。但是查询并没有那么复杂,表也没有那么多条目。直接在db环境下运行sql,查询耗时0.031秒。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-07
相关资源
最近更新 更多