Since its release in 2011, Laravel has become popular choice for the development of business focused applications. One reason Laravel is too much popular in developers is its performance optimization that allows developers to fine tune Laravel based apps.
In this tutorial I will guide on how to optimize Laravel based application when in production.
Prerequisites
For this purpose of tutorial, I assume you have installed Laravel on your server. I have following setup:
Config Caching
Laravel provides outstanding command Artisan Cache Config which is very help full in boosting performance. The basic usage of command is as follows:
php artisan config:cache
Once you run this command, the changes you make will not have any effect. If you wish to refresh the cache, run this command once again. In order to clear the config cache, use the following command:
php artisan config:clear
To further optimize performance of your application you can use OpCache, that caches the php code, so you don’t have to recompile it again and again.
Routing Cache
Routes caching is very important optimization feature when you have lots of routes. The routes cache is a simple array and helps in speeding up Laravel Performance. Run the following command:
php artisan route:cache
Remember to run the command every time when you have made changes in routes file or added any new route. For clearing cache use following command:
php artisan route:clear
Remove Unused Service
In the context of Laravel optimization, an important tip is to not to load all services from the config, it is always important to disable unused services from config files.
Composer Optimize Autoload
It is a good idea to use Composer scan the application and create one-to-one association of the classes and files in the application. Use the following command:
composer dumpautoload -o
Limit Included Libraries
It is always important to review all the libraries that are called within the code. If you think you could do it without using a library remove it from config/app.php to speed up Laravel application.
JIT Compiler
On every request, converting PHP code to bytecode and then executing it is a resource intensive process. Therefore, go-between such as Zend Engine are required to execute the C subroutines. To reduce time, it is essential to repeat this process just once, this is where the Just-in-time (JIT) compiler has proven to be very useful. For Laravel based applications the recommended JIT compiler is HHVM by Facebook.
Cache Queries Results
By caching the results of the queries which are used frequently is a great way to optimize your Laravel based application. For this my recommendation is as follows:
$posts = Cache::remember('index.posts', 30, function() {return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get();});
Use Eager Loading for Data
When Eloquent uses eager loading it loads all associated object models in response to the initial query. Let’s compare Eager loading and Lazy loading.
The Lazy loading query will look as follows:
$books = App\Book::all(); foreach ($books as $book) { echo $book->author->name;}
The Eager loading query will look as follows:
$books = App\Book::with('author')->get(); foreach ($books as $book) { echo $book->author->name;}
Precompile Assets
For Laravel tuning developers often distribute code in separate files. While this keeps the code clean and manageable, but it doesn’t contribute to efficient production. To help developers in this context Laravel provides simple commands:
php artisan optimize php artisan config:cache php artisan route:cache
via Laravel News Links
Tips for Laravel Performance Optimization