【发布时间】:2013-02-27 10:21:36
【问题描述】:
我有一个简单的 PHP 页面请求来自 MySQL 数据库的地址列表。数据库表有 1257 个条目。我还包括一个动态加载的侧边菜单以浏览其他站点。 我一共收到了 5 个 MySQL 请求
- 地址
- 分页
- 检查用户是否有权浏览
- 获取侧边菜单的所有组
- 获取侧边菜单的所有子条目
网站加载大约需要 5 秒。
我在 Google 上搜索了网站加载时间的改进,发现具有页面速度的 Google Developer 工具完成了它告诉我的所有改进,例如启用放气、更改横幅大小等,但加载时间仍然几乎相同。我想知道这是否常见,或者我可以做些什么来缩短加载时间。
编辑:我还索引了这些列并启用了 MySQL 缓存。我还在菜单组表中的子条目表中使用外键
EDIT2: 我找到了解决方案,问题是我使用 localhost 连接到我的数据库,但由于我使用 Windows 7,它尝试通过 ipv6 连接现在我将所有 localhost 更改为 127.0.0.1 和加载我的页面只需要大约 126 毫秒
【问题讨论】:
-
我认为 1257 个非常小的查询只需要几毫秒。可能是您正在加载图像并从其他可能需要时间的站点引用资源。或者您可能正在使用糟糕的服务器
-
我在本地机器上使用了 xampp,它有 8gb 内存、SSD 和 3GHz 四核 CPU。因此,由于服务器基本上是本地主机,因此如果我在 phpmyadmin 中执行查询,每个查询大约需要 0.02 秒,这正是我如此困惑的原因。
-
我建议你在脚本中记录下各个点的时间(使用 microtime(true) 获取时间),然后将它们放在脚本末尾尝试找到哪个部分的代码需要时间。您可以在这些区域进行更多时间检查,以使其更加明确。还可以在 phpmyadmin 中单独尝试您的 SQL 查询,或者使用 EXPLAIN 进行等效操作,并检查索引是否真的被使用了。
-
使用 microtime(true) 我发现我只为这一行损失了 1 秒 mysql_query("SET NAMES 'utf8'");还有1秒连接数据库正常吗?
-
查询最多也需要大约 0.04 秒