我使用ZF开发了应用程序。应用程序很小,功能很多。
我使用Zend_Application(已在构造函数中使用自动加载器),Zend_Layout,Zend_view,Zend_form等。我目前的问题是,页面加载非常慢,而且在本地主机上也是如此。
我启用了xdebug,调查问题,在“tmp”文件夹中获得了一个cachegrind文件,并尝试使用WinCachegrind软件查看它。在那里,我可以看到为每个请求或页面加载运行了很多进程和函数。
此外,我已经为firefox安装了YSlow附加组件,并在几秒钟内观察到页面加载的速度......我已经将速度与ZF和非ZF应用程序进行了比较。从比较开始,非zf应用程序的页面加载时间不到1秒,对于ZF应用程序,它至少需要6-7秒。有多大的不同。
应用程序中发生的主要事情是:
1)每个请求都会发生数据库连接。
2)我没有明确地将视图添加到布局,ZF只是根据动作名称自动将它附加到layout.phtml。
3)有些窗口的表单只有很少的下拉框,可以从数据库中获取数据。
4)在为每个请求从DB加载特权之前,让具有ACL的菜单得到满足,但现在我已对其进行优化,以便它只能用于登录,其余的时间将从Zend_Registry。
我想附加cachegrind文件,以便某些人可以看到后台发生了什么,但我无法在此处看到附加选项。
有人请帮我找到解决方案。任何形式的帮助都非常感谢。非常感谢
答案 0 :(得分:0)
让我们试着给出一些提示。
第一次数据库连接只应发生一次(除非您在数据库或多个数据库上使用多个权限访问权限)。因此,请检查您是否在Zend_Db_Tables对象中使用Singleton模式
然后你不使用 Zend_Cache 。您应该真正开始使用Zend_Cache并构建多个缓存对象。比方说,例如,具有长期存储的File cach,以及存储对象的memcache或Apc Cache。然后在几个层中使用这些缓存:
最后,全面了解应用程序引擎的工作方式,以及数据如何增长和使用。您需要以最佳方式使用应用程序级别缓存(例如,应缓存某些元素)对于用户组?,应该为组构建Acl对象,对于每个用户,对于每个人来说,布局中是否应该为每个人呈现相同的块?)。