dir*_*ory 31 optimization performance zend-framework2
当超过3个用户同时使用它时,我的ZF2应用程序似乎非常慢.
我使用xdebug和webgrind来分析我的代码,而我的函数似乎很慢,所以它必须是zf2中的自我优化问题.
对于缓存我使用EvanDotPro的EdpSuperluminal模块,这似乎提高了应用程序的性能.
我们使用nginx反向代理,但也没有意义.
我需要一些好的建议来增加高流量的响应.我同时谈论30多个连接用户.
Sam*_*Sam 43
实现更快的应用程序的步骤很简单.总有三件事情可以考虑.
ZF2 Performance QuickTipp#1 - ViewModels 始终手动分配要渲染的完全限定脚本.这会稍微提高性能.它是这样完成的:
public function someAction()
{
$viewModel = new ViewModel();
$viewModel->setTemplate('MODULE / CONTROLLER / ACTION.phtml');
// In this given example: $viewModel->setTemplate('foo/bar/some.phtml');
// Do some other Controller-logic as used to
return $viewModel->setVariables(array(
//key-value-paired view-variables
));
}
Run Code Online (Sandbox Code Playgroud)ZF2 Performance QuickTipp#2 - 类别地图自动加载 这可能是加速应用程序最重要的部分之一.就个人而言,我看到装载时间增加了40%.实现这一点非常简单:
class Module
{
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php',
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
所述autoload_classmap.php然后是一个简单的阵列'FQ-CLASSNAME' => 'FQ-FILEPATH'.使用ZF2的classmap_generator-utility可以很容易地自动执行此操作
ZF2 Performance QuickTipp#3 - 让Module.php保持轻盈!可悲的是,这是一篇我还没有写过的帖子.这Module.php是一个在每个请求上加载的文件.很多人都忘掉了这一点,并在里面写了很多很多工厂.有一次,ZfcUser-Module.php就是不该做的一个例子.每个请求也会执行闭包或匿名函数.如果在整个项目中有太多的工作要做,这是相当多的工作要做.更好的方法是简单地编写Factory-Classes.ZfcUser后来更新了Module.php以使用此策略.
这就是人们可以做的所有简单的事情(我知道 - 我不太了解!:D).然而,有趣的是,开始使用3个用户,您的应用程序运行缓慢.根据我的经验,这与脚本本身无关,而是服务器问题.这是来自分期机还是本地?
Mic*_*ego 29
如果您使用的是Doctrine,请不要忘记为注释添加缓存.这大大提高了性能(当我激活此缓存时,我将加载时间几乎除以2).如果您使用的是DoctrineORMModule:
'doctrine' => array(
'driver' => array(
'cache' => array(
'class' => 'Doctrine\Common\Cache\ApcCache'
),
'configuration' => array(
'orm_default' => array(
'metadata_cache' => 'apc',
'query_cache' => 'apc',
'result_cache' => 'apc'
)
),
)
)
Run Code Online (Sandbox Code Playgroud)
但是,在开发时非常不方便,因为每次映射更改时都必须清除缓存.
And*_*rew 27
如果你有一个大项目,ZF2类图生成器将给你一个很大的提升:
http://framework.zend.com/manual/2.0/en/modules/zend.loader.classmap-generator.html
或者,如果您正在使用composer(您应该这样做),那么您可以使用composer为所有模块和依赖项生成类图,这甚至更好:
php composer.phar install --optimize-autoloader
php composer.phar update --optimize-autoloader
Run Code Online (Sandbox Code Playgroud)