There’s few very simple steps to achieve a faster application. There’s three things that can always be considered.
-
ZF2 Performance QuickTipp #1 – ViewModels
Always manually assign the fully qualified script to render. This will increase the performance a little. It’s done like this: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 )); }
-
ZF2 Performance QuickTipp #2 – Classmap Autoloading
This probably is one of the most important parts of speeding up your application. Personally i’ve seen an increase in LoadingTimes by up to 40%. Implementing this is pretty simple:class Module { public function getAutoloaderConfig() { return array( 'Zend\Loader\ClassMapAutoloader' => array( __DIR__ . '/autoload_classmap.php', ), ); } }
The
autoload_classmap.php
then is a simple array of'FQ-CLASSNAME' => 'FQ-FILEPATH'
. This can be automatted pretty easily using the classmap_generator-utility of ZF2 -
ZF2 Performance QuickTipp #3 – Keep Module.php light!
Sadly this is a post i haven’t come around to write yet. TheModule.php
is a file that is loaded on every single request. Lots of people forget about this and write lots and lots of factories inside them. At one point, ZfcUser-Module.php was an example of what not to do. Closures or anonymous functions are executed on every request, too. This is quite a bit of work to be done if there’s too many of them over the whole project. A better approach would be to simply write Factory-Classes. ZfcUser later updated Module.php to use this strategy.
And that’s pretty much all the easy stuff one can do (that i know of – i dont know much! :D). However what sounds interesting is that starting to use 3 users your application runs slow. To my experience this has nothing to do with the scripts itself but is rather an server issue. Is this from a Staging Machine or locally?