2010-07-10 75 views
0

嗨,大家好我正在测试我的应用程序。使用萤火虫,我发现我的应用程序非常慢,需要加速。我的页面加载时间过长!我怎样才能减少页面加载时间!

我有一个超过700KB的巨大组合JavaScript文件,其中包括我所有的js库,但鬼的部分是代码本身需要20到40秒之间的任何运行。现在的事情是我的代码基于zend框架并从邮件文件夹中检索邮件 - 但是这太慢了。我怎样才能加快速度 - 我如何判断代码的哪个部分正在收费?

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

的JavaScript然而在同一时间的iissue的一部分,另一个问题是,页面我正在讨论通过电子邮件收件箱进行的特定阅读。它是一个Webmail界面的前端,有数据库调用正在进行,但时间似乎可以忽略不计。看看我使用microtime计算得到消息和代码片段的时间。

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

[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 

回答

0

可以使用的XDebug与{K,赢} Cachegrind做一些分析和查找代码的缓慢部分。 KCachegrind在linux上运行,比Wincachegrind更好。

0

通常,SQL查询写入不正确或迭代在循环下负责减慢网站。一个700KB的JavaScript文件不会让它慢得多。试着找出哪些查询执行时间太长,或者是否有一些查询在循环中运行,尝试找到一些其他方式来获取没有循环的相同结果。

+0

并不多。尽管如此,我的互联网连接需要大约15-20秒才能加载。这不是那里最慢的连接......只有JavaScript的700K是巨大的! – EFraim 2010-07-10 11:05:20

+0

请检查我的更新后的问题 – Ali 2010-07-10 11:11:19

+0

如果你认为它只是由于那个大的JavaScript文件,将该文件分成较小的文件,并且只包括那些每个页面需要的文件。如果你使用的是jQuery或类似的东西,包括它通过自己的链接更好,而不是将其复制到你的服务器,并从那里包括它。 – 2010-07-10 11:23:03

0

很难说出问题出在哪里,但如果它的加载本身可以为Firebug安装YSlow

这将分析您的网站,因为它加载。然后它将对它进行分级并确定问题领域 - 建议改进(通常是轻松获胜)以帮助改善情况。这将有助于识别实际网页资源的任何问题。

0

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

1

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

除非JS正在处理大量数据,否则我会猜测问题在于执行了很多API调用回Web服务器(AJAX和类似的)。这应该很容易解决,比方说,如果你现在拥有并返回单个信息单元,那么就可以制作接收和返回列表的API函数。 getText(1,2,5,6)getText(1),getText(2),...

或者服务器本身的代码被破坏,所以它是服务器需要20多秒才能响应一些JS查询,它需要在实际构建页面之前进行响应...

+0

请检查我更新的问题 – Ali 2010-07-10 11:11:49