2011-04-27 67 views
2

我已经开发了使用ZF的应用程序。该应用程序有点大,有很多功能。我使用Zend_Application(已经在构造函数中使用自动加载器),Zend_Layout,Zend_view,Zend_form等等。我目前的问题是,页面加载速度非常慢,并且在本地主机上也使用XAMP。如何在Zend Framework应用程序中提高页面加载速度

我已启用xdebug,调查问题,获得“tmp”文件夹中的cachegrind文件,并试图用WinCachegrind软件查看它。在那里,我可以看到许多进程和函数针对每个请求或页面加载运行。

此外,我已经安装了Firefox的YSlow附加组件,并在几秒钟内观察了页面加载的速度......我已经将速度与ZF和非ZF应用程序进行了比较。而从比较来看,非zf应用的页面加载时间不到1秒,对于ZF应用来说,则需要至少6-7秒。真是太大了。

在APP主事情的发生是:

1)数据库连接会为每个请求。

2)我没有明确添加视图到布局,ZF只是将它自动附加到layout.phtml,基于操作名称。

3)一些窗口的窗体很少从数据库中提取数据的下拉框。

4)使用ACL实现的菜单在它为每个请求加载来自数据库的特权之前,但是现在我已经对它进行了优化,以便它只能使登录和剩余时间变长来自Zend_Registry。

我想附加cachegrind文件,以便有人可以看到在后台发生了什么,但我不能看到一个选项在这里附加。

有人请帮我找到一个解决方案。任何形式的帮助真的很感激。非常感谢

+0

您是否知道执行数据库查询需要多少加载时间?看看DB分析器 - http://framework.zend.com/manual/en/zend.db.profiler.html – 2011-04-27 15:35:39

+0

你可以链接到cachegrind文件的某个地方吗?甚至还有一个截图给人们一个概述。否则,我们无法辨别真正的问题。 – 2011-04-27 15:51:41

+0

是啊sure..ill上传它的地方... annd会给你的链接.. – 2011-04-27 18:49:45

回答

0

让我们试着给出一些提示。

首先数据库连接应该只发生一次(除非你使用的数据库或多个数据库几个特权访问)。因此,检查您使用的Singleton模式与您Zend_Db_Tables对象

然后你不使用Zend_Cache是​​。你应该真的开始使用Zend_Cache并构建多个缓存对象。比方说,例如一个File cach,具有长期存储,以及一个memcache或Apc Cache,用于存储对象。然后,在若干层使用这些缓存:

  • 给FileCache到Zend_Db_Table类(defaultMetaDataCache),这样你就可以避免元数据的查询,这要求你使用的表中的各个列的说明查询的战利品。
  • 存储一个或多个Acl对象(取决于您如何使用Acl,如果您有一个带有所有规则的大Acl或带有子集的几个Acl)。并且当它们被构建时将它们存储在中期缓存中。
  • 想想其他用法,检测重环路,半静态内容(如你选择列表,多少时间应该被认为是静态的?)

最后,获取应用程序引擎如何工作以及数据如何增长和使用的完整图像。您将需要该步骤以最佳方式使用应用程序级缓存(例如应该一些元素被缓存给用户组?应该为组创建Acl对象吗?对于每个用户,对于每个人来说,是否应该为每个人呈现相同的布局块?)。

+0

嗨regilero,非常感谢你的回答。首先,该应用程序将在vpn下工作,在那里不会有许多用户同时在线。它不会公开。所以我们可以猜测用户的限制。其次,数据库中的一些表格将随时随地增长。此外,ACL一旦用户登录,它们将具有某些可访问的菜单,但是也不能访问某个链接菜单,他们被允许访问..所以应用程序结构就像这样...如果有缓存的某些页面,主要是窗体,缓存可以是非常有用的。什么是eAccelerator – 2011-04-28 10:52:34

+0

我正在谈论在您的应用程序中使用缓存,而不是缓存最终页面的应用程序加载的对象。例如,您可以为每个用户建立一个ACL对象,并使用它的所有规则,并且避免每次重建它。 Opcode看看APC,因为它也会为你提供一个缓存后端。 – regilero 2011-04-28 12:13:37

+0

嗨regilero,好吧...我正在计划缓存对象,如你所说...将检查性能差异。此外,根据你什么所有其他领域,我需要检查...有时我可以看到视图渲染滞后。您的信息很有帮助。并且,希望你已经看到了cachegrind文件......有很多函数被调用......这让我更加担心......无论如何让我尝试一下缓存技术。 Zend_Cache将是正确的选择权... – 2011-04-28 13:00:42