【问题标题】:My page takes too long to load! How can I cut the page load time!我的页面加载时间太长!如何缩短页面加载时间!
【发布时间】:2010-07-10 19:11:05
【问题描述】:

大家好,我正在测试我的应用程序。使用 firebugs 我发现我的应用程序非常慢,需要加快速度。

我有一个超过 700 KB 的巨大 javascript 文件,其中包括我所有的 js 库,但令人毛骨悚然的部分是代码本身需要 20 到 40 秒才能运行。现在问题是我的代码基于zend 框架并从邮件文件夹中检索电子邮件——但这太慢了。如何加快速度 - 如何判断代码的哪一部分造成了损失?

==========================

javascript 是 iissue 的一部分,但同时另一个问题是我正在谈论的页面特别是通过电子邮件收件箱读取的。它是 webmail 界面的前端,正在进行数据库调用,但时间似乎可以忽略不计。请看以下我使用 microtime 计算获取消息和代码 sn-ps 的时间。

我花时间运行每个 sn-p 代码,并在报告中为它们附加了一个标签,这就是结果 - 第一个数字是以微秒为单位的时间,而数字后面是那个 sn 的标签-p 花费时间的代码。我应该密切关注哪个 sn-p。带有重复标签的那些是因为它们循环运行 - 它是一个电子邮件客户端,每条消息都作为循环检索。

[Log Entry 2010-07-10T10:49:44+00:00] 0.000446:::::01

[Log Entry 2010-07-10T10:49:45+00:00] -0.100127:::::02

[Log Entry 2010-07-10T10:49:46+00:00] 0.191738:::::get message

[Log Entry 2010-07-10T10:49:46+00:00] 2.0E-5:::::get headers

[Log Entry 2010-07-10T10:49:46+00:00] 0.000776:::::contacts check

[Log Entry 2010-07-10T10:49:46+00:00] 0.174134:::::non multipart

[Log Entry 2010-07-10T10:49:47+00:00] -0.842978:::::get message

[Log Entry 2010-07-10T10:49:47+00:00] 1.2E-5:::::get headers

[Log Entry 2010-07-10T10:49:47+00:00] 0.000834:::::contacts check

[Log Entry 2010-07-10T10:49:47+00:00] 0.179016:::::non multipart

[Log Entry 2010-07-10T10:49:48+00:00] -0.851685:::::get message

[Log Entry 2010-07-10T10:49:48+00:00] 1.8E-5:::::get headers

[Log Entry 2010-07-10T10:49:48+00:00] 0.001334:::::contacts check

[Log Entry 2010-07-10T10:49:49+00:00] -0.587962:::::html part message

[Log Entry 2010-07-10T10:49:49+00:00] 0.138799:::::get message

[Log Entry 2010-07-10T10:49:49+00:00] 1.9E-5:::::get headers

[Log Entry 2010-07-10T10:49:49+00:00] 0.002155:::::contacts check

[Log Entry 2010-07-10T10:49:49+00:00] 0.181675:::::non multipart

[Log Entry 2010-07-10T10:49:50+00:00] -0.856142:::::get message

[Log Entry 2010-07-10T10:49:50+00:00] 1.6E-5:::::get headers

[Log Entry 2010-07-10T10:49:50+00:00] 0.000803:::::contacts check

[Log Entry 2010-07-10T10:49:50+00:00] 0.178046:::::non multipart

[Log Entry 2010-07-10T10:49:50+00:00] 0.141544:::::get message

[Log Entry 2010-07-10T10:49:50+00:00] 1.8E-5:::::get headers

[Log Entry 2010-07-10T10:49:51+00:00] 0.001167:::::contacts check

[Log Entry 2010-07-10T10:49:52+00:00] -0.188653:::::html part message

[Log Entry 2010-07-10T10:49:52+00:00] 0.148198:::::get message

[Log Entry 2010-07-10T10:49:52+00:00] 2.0E-5:::::get headers

[Log Entry 2010-07-10T10:49:53+00:00] 0.00284:::::contacts check

[Log Entry 2010-07-10T10:49:53+00:00] 0.336415:::::html part message

[Log Entry 2010-07-10T10:49:53+00:00] 0.140683:::::get message

[Log Entry 2010-07-10T10:49:53+00:00] 2.0E-5:::::get headers

[Log Entry 2010-07-10T10:49:54+00:00] 0.003539:::::contacts check

[Log Entry 2010-07-10T10:49:54+00:00] 0.311735:::::html part message

[Log Entry 2010-07-10T10:49:54+00:00] 0.143097:::::get message

[Log Entry 2010-07-10T10:49:54+00:00] 1.9E-5:::::get headers

[Log Entry 2010-07-10T10:49:55+00:00] 0.001392:::::contacts check

[Log Entry 2010-07-10T10:49:55+00:00] 0.313101:::::html part message

[Log Entry 2010-07-10T10:49:55+00:00] 0.146926:::::get message

[Log Entry 2010-07-10T10:49:55+00:00] 1.7E-5:::::get headers

[Log Entry 2010-07-10T10:49:55+00:00] 0.000743:::::contacts check

[Log Entry 2010-07-10T10:49:56+00:00] 0.173081:::::non multipart

【问题讨论】:

    标签: php zend-framework optimization


    【解决方案1】:

    对于分析,您可以尝试What is the best way to profile javascript execution?https://developer.mozilla.org/en/Venkman(具体参见here)。

    除非 JS 处理大量数据,否则我猜测问题出在对 Web 服务器(AJAX 和类似)进行大量 API 调用。这应该很容易解决,例如,如果您当前让 API 函数获取并返回列表,则它们获取并返回单个信息单元。 getText(1,2,5,6)getText(1),getText(2),...

    或者服务器本身的代码被破坏了,所以服务器需要 20 多秒的时间来响应一些 JS 查询,它在实际构建您的页面之前需要响应......

    【讨论】:

      【解决方案2】:

      您可以将 XDebug 与 {K,Win}Cachegrind 一起使用来进行一些分析并找到代码的慢速部分。 KCachegrind 运行在 linux 上,比 Wincachegrind 好。

      【讨论】:

        【解决方案3】:

        通常,SQL 查询编写不当或在循环下进行迭代会导致网站速度变慢。一个 700KB 的 javascript 文件不会让它变慢那么多。尝试找出哪些查询执行时间过长,或者是否有一些查询在循环中运行,请尝试找到其他方法来获取相同的结果而不使用循环。

        【讨论】:

        • 没那么多。请注意,虽然我的 Internet 连接需要大约 15-20 秒才能加载。而且这还不是最慢的连接... 700K 对于 JavaScript 来说是巨大的!
        • 如果你认为它只是由于那个大的 javascript 文件,把那个文件分成更小的文件,只包括每页需要的文件。如果您使用的是 jquery 或类似的东西,最好通过他们自己的链接将其包含在内,而不是将其复制到您的服务器并从那里包含它。
        • javascript 文件不是问题——我正在使用 firebug 进行测试,它表明我的 php 代码单独运行大约需要 20 秒。我应该看什么来加快这里的速度?
        • 我建议,通过删除一些您认为可能很耗时的 sql 查询来测试您的代码,如果删除一些查询可以提高性能,请寻找一些替代方法来获取该数据。跨度>
        【解决方案4】:

        很难判断问题可能出在哪里,但如果是加载本身,您可以为 Firebug 安装 YSlow

        这将在您的网站加载时对其进行分析。然后它将对其进行评分并确定问题区域 - 建议改进(通常很容易获胜)以帮助改善情况。这将有助于识别实际网页资源的任何问题。

        【讨论】:

          【解决方案5】:

          要检测与提供给浏览器的内容相关的一些问题,请在 Mozilla Firefox 下安装 YSlow 插件。您将获得有关各个维度的评分:http 请求数、压缩、动态 CSS 等。

          【讨论】:

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