提高Zend Framework 2 性能 Autoloader Classmap

http://solf.me/zend-framework-2-performance-tips/

公司的新站选用了Zend Framework 2,一切都进行得很顺利,但在线上测试的时候,用xdebug profile一下,发现生产首页用了500毫秒,而无cache情况下产品页得生成也接近800毫秒。于是上网搜索,找到几个提高ZF2性能的几个tips。

Autoloader Classmap

使用classmap,就可以在初始化的时间返回一个‘类-文件’对应的array,从而加速加载类的速度。默认的类加载是使用StandardAutoloader,正则表达式来将类名字转换成文件名再加载,试想一下每次加载都要跑一下性能不高的正则匹配,速度能有多快呢

这是默认的自动加载配置src/module/<app>/Module.php

1
2
3
4
5
6
7
8
9
10
11
12
13
public function getAutoloaderConfig()
{
     return array (
         'Zend\Loader\StandardAutoloader' => array (
             'namespaces' => array (
                 __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
             ),
         ),
         'Zend\Loader\ClassMapAutoloader' => array (
             __DIR__ . '/config/autoload_classmap.php' ,
        ),
     );
}

将其修改成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public function getAutoloaderConfig()
{
     return array (
         'Zend\Loader\ClassMapAutoloader' => array (
             __DIR__ . '/config/autoload_classmap.php' ,
         ),
 
         'Zend\Loader\StandardAutoloader' => array (
             'namespaces' => array (
                 __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
             ),
         ),
     );
}

然后使用ZF2自带的命令行工具生成classmap文件

1
$ php zf2 /bin/classmap_generator .php -l <your-zf2-app-location> -o <your-zf2-app-location> /config

之后就会在app/config目录下生成autoload_classmap.php文件。

Template Map

和classmap类似,这个会将‘模板-文件’的对应关系变成一个array并返回,免去了转换的过程。

同理,运行如下命令

1
$ php zf2 /bin/templatemap_generator .php -l -l <your-zf2-app-location> -o <your-zf2-app-location> /config

这样,template_map.php就会在app/config下生成。然后,在app/config/module.config.phpview_manager下加上以下那句话

1
2
3
'view_manager' => array (
     'template_map' => include __DIR__  . '/template_map.php' ,
),

参考:ZF2 Performance QuickTipp #2 – Classmap Autoloading


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值