如何在Zend Framework应用程序中提高页面加载速度

| 我使用ZF开发了应用程序。该应用程序很小,功能很多。 我使用Zend_Application(已经在构造函数中使用自动加载器),Zend_Layout,Zend_view,Zend_form等。我当前的问题是,页面加载非常缓慢,在具有XAMP的localhost中也是如此。 我已启用xdebug,以调查问题,在\“ tmp \”文件夹中获得了cachegrind文件,并尝试使用WinCachegrind软件进行查看。在这里,我可以看到针对每个请求或页面加载正在运行的许多过程和功能。 另外,我已经为firefox安装了YSlow附加组件,并观察了几秒钟内页面加载的速度...我将速度与ZF和非ZF应用程序进行了比较。通过比较,非zf应用程序的页面加载时间不到1秒,而ZF应用程序的页面至少需要6-7秒。多么巨大的区别。 该应用程序中发生的主要事情是: 1)每个请求都会发生数据库连接。 2)我没有将视图明确添加到布局中,ZF只是根据操作名称将其自动添加到layout.phtml中。 3)有些窗口的表单带有很少的下拉框,这些下拉框可从数据库中获取数据。 4)在为每个请求从数据库加载特权之前,都隐含了带有ACL的菜单,但是现在我已经对其进行了优化,以便它仅在登录和Zend_Registry剩下的时间中起作用。 我想附加cachegrind文件,以便有人可以看到后台发生的事情,但是我看不到这里的附加选项。 有人请帮我找到解决方案。任何帮助都非常感谢。非常感谢     
已邀请:
让我们尝试给出一些提示。 第一个数据库连接应该只发生一次(除非您对一个或多个数据库使用多个特权访问)。因此,请检查Zend_Db_Tables对象是否使用了Singleton模式 然后,您不使用Zend_Cache。您应该真正开始使用Zend_Cache并构建几个缓存对象。比方说,例如具有长期存储的文件缓存,以及存储对象的内存缓存或Apc缓存。然后在几层中使用这些缓存: 将FileCache提供给Zend_Db_Table(defaultMetaDataCache),这样您就可以避免大量的元数据查询,这些查询要求您对所使用表的每一列进行描述。 存储一个或多个Acl对象(取决于您使用Acl的方式,如果您有一个包含所有规则的大Acl或具有子集的多个Acl)。并在构建它们时将它们存储在中型缓存中。 考虑其他用法,检测重循环,半静态内容(就像您选择列表一样,应将它们视为静态多少次?) 最后,完整地了解应用程序引擎的工作方式以及数据的增长和使用方式。您将需要采取这一步骤,以最好的方式使用应用程序级别的缓存(例如,应为某些组的元素缓存某些元素)用户?,是否应该为组构建Acl对象,对于每个用户,对于每个人,布局中是否还有一些应该使每个人都呈现相同的块?)。     

要回复问题请先登录注册