【问题标题】:lengthy page load time页面加载时间长
【发布时间】:2012-08-21 08:18:33
【问题描述】:

我有一个页面需要 12 秒才能加载!

该页面需要显示由 SQL 计数查询生成的 20 项不同的数据。

由于 SQL 每次都不同,因此无法组合查询。

我已尝试为相关表编制索引,但无济于事...

我也想过实现memcache和使用页面缓存。

我正在使用流行的 codeigniter php 框架。

有人有什么建议吗?

【问题讨论】:

  • 您确定不能一起批处理查询吗?
  • @ZathrusWriter:你不应该因为提问者而对问题投反对票或反对票,而是因为问题。 (当然这个问题也值得一票否决,因为它问得不好)
  • @Nobody 也许你是对的,但我仍然没有看到在 StackOverflow 的系统中教一个人这一课的更好工具 - 是否有替代方案?

标签: php codeigniter


【解决方案1】:

创建一个在命令行中进行计数的 cron,同时更新一个单独的“计数”表。因此,您将在 counts 表中有 20 个条目,您都可以在一个查询中请求这些条目。 在页面加载期间仅查询该表。

您可以自己决定 cron 应该多久运行一次,但要确保它不会花费太长时间,否则只需将不同的 count-update-process 分离到不同的 cron 文件(或命令)中。

【讨论】:

    【解决方案2】:

    我想它可能可以忽略不计,但是您实际上在每个 COUNT() 查询中返回了多少字段?我过去听说过使用 COUNT(),实际上使用 COUNT(*) 之类的东西比使用 COUNT(columnname) 更好,因为这样数据库可以将它基于任何最快的列。

    也许还值得看看 CodeIgniter 的数据库缓存类 - 这听起来正是那种有用的情况。

    CodeIgniter 的 Profiler 类对于这样的事情非常方便。如果您启用它并使用它生成的报告来了解每个查询需要多长时间,您可能至少可以优化其中的一些。

    另外,您可能需要考虑使用字节码缓存 - APC 非常好,并且似乎与 CodeIgniter 配合得很好。据我所知,它不会加速实际的数据库事务,但它可能会通过加速 PHP 执行来使应用程序更快。

    【讨论】:

      猜你喜欢
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多