优化Zend框架

bea*_*ear 6 zend-framework zend-server

我试图从我的应用程序中获得尽可能多的性能,该应用程序使用Zend Framework.

我正在考虑使用Zend Server,启用APC.但是,我需要先了解一些事情.

使用Zend Server + Zend Framework有什么好处,还是我应该使用任何普通的系统来托管它?

沙塔尔

Tom*_*far 25

我提示更快的ZF(从上到下尝试):

优化包括路径

  • 首先是道路
  • 模特接下来
  • 最后休息

使用启用了OPCache的PHP 5.5 [新]

  • 我不能强调这一点
  • 涨幅约50%

缓存表元数据

  • 即使不需要其他缓存,也应缓存
  • 我们的一个应用程序性能在Oracle服务器上提高了约30%;)

支持viewHelpers使用action()视图帮助器

  • 创建访问模型的视图助手
  • 或仅传递模型中的数据并使用视图助手对其进行格式化

使用classmap自动加载器

  • 自ZF1.11起
  • 最好使用剥离的require_once调用

最小化路径堆栈

  • ZF中有很多路径堆栈
    • 形式元素
    • 查看助手
    • 行动助手
  • 每个路径堆栈查找意味着stat call =性能损失
  • 堆栈上的每个路径的默认类越来越贵

剥离require_once

  • 从Zend的类中剥离require_once,支持使用find&sed进行自动加载

在partial()视图助手上使用render()

  • 没有创建新的视图实例
  • 您需要在主视图内设置渲染视图范围之外的变量!
  • 你也可以用foreach + render()替换partialLoop ()

缓存一切可能

  • 需要大量工作并且很少改变的小块(如动态菜单)
  • 使用分析器找到低悬的水果
    • 认为慢的东西可能不会那么慢
  • 缓存静态缓存集的所有内容
    • 见手册 - Zend_Locale::setCache(), Zend_Currency::setCache(), Zend_Db_Table::setDefaultMetadataCache(), configs...

永远不要使用view helper action()或action helper actionStack()

  • 除非100%需要,否则永远不要使用它们 - 例如对于复杂的数据输出,但要注意它们造成的性能损失
  • 他们创造了全新的调度循环并且是性能杀手!

禁用viewRenderer

试试我的superlimunal插件

  • 它将包含的类合并到一个长文件中以最小化stat调用
  • GitHub得到
  • 衡量绩效收益

服务器端文件缩小

  • 它对于真正的大文件是有意义的 - 硬盘总是瓶颈
  • 甚至微优化有时也能正常工作
    • 具有所有ZF类路径的类映射是巨大的,在使用"干"操作码缓存和HDD处于压力下时,使用空格并替换长变量$a$b提高性能.

任何操作码缓存当然是必须的;)(APC,ZendOptimizer等)

  • actionhelpers的明显优势在于它们也可用于其他项目;) (2认同)