Since its first release in 2011, Laravel has grown multi-fold and now it’s considered to be the best PHP framework of 2017. From complex APIs to simple web apps, Laravel can be a one-stop PHP development platform for your business. The set of libraries and architecture that this framework provides, make it easy to build amazing sites using well-structured and beautiful code. However, to build such apps, your Laravel developer should know the tweak and tweets for utilizing the power of this framework and enhance performance as well.
Moving forward from our last blog where we discussed why Laravel is considered to be the best, now in this one we are going to discuss seven performance optimization tips for Laravel developer. Let’s see what we found after our research at ValueCoders.
1. Enhance Artisan Command Uses
Laravel comes with a very useful and unique tool named Artisan command and this is very helpful to boost performance. See our common setup here:
This is very useful, especially when your Laravel developer is creating a lot of routes and configuration, and he just simply creates a cache as a plain array, and then Laravel becomes faster to load cache instead of loading the real object.
But don’t forget to re-run this command after you’ve changed config or your routes file. If you don't, Laravel will not handle your changes because it already loaded from cache.
Also, we cache user data, settings, and locations. This limits the number of SQL queries. Make sure you invalidate the cache when the data changes. Also, make sure you have good indexes for your database Cache your configs, routes, and views. Add these commands to your Forge deploy script.
2. Remove Unused Service
Sometimes, it is better that you don’t load all services in your config, and disable unused service inside the config file. Add a comment to the unused service provider in
config/app.php. However, make sure after commenting, you don’t break the whole functionality of your app.
3. Minimize Use of Plugins Laravel Developer
There are a wide variety of plugins for Laravel that allow you to easily add more functionality. With that increased functionality comes more libraries and files to load, which can slow you down. Make sure to take take a look at which providers you are loading through your
config/app.php file and cut down unnecessary ones. Moreover, Laravel uses Composer to manage its components, so cutting down your composer.json file will reduce the dependencies that are loading.
4. Profiling Your Queries
If you are curious about what happens behind the scene when you execute a query on an Eloquent object, you should install a profiler package. You can choose https://github.com/loic-sharma/profiler, which is a port of Laravel 3’s profiler, or https://github.com/barryvdh/laravel-debugbar, which integrates the generic PHP Debug Bar package. Once installed, they add a toolbar at the bottom of each rendered view, which shows the SQL queries that were issued on a given page and the amount of memory used by a request to your application. This is often the best way to identify potential bottlenecks in your code when you work with smaller data sets in your local development database.
5. Apply “Eager Loading” to Your Data Laravel Developer
Laravel uses Eloquent ORM to easily map your object models to the database tables supporting it. With a few simple files you can map out your object structure, and Eloquent will handle all the appropriate database interaction needed for the CRUD (create, retrieve, update, delete) operations. When Eloquent does it, it uses a “lazy loading” approach.
That means for any related data, such as the author details for a book, Eloquent won’t actually retrieve the data until it is specifically referenced somewhere else in the code. While it may seem harmless to have one or two extra queries on your details page, making a similar query against a collection of books can result in a lot of queries and reduced performance as you wait for all of your data to return.
Instead, you want to set up your queries to use “eager loading,” which means they will retrieve any associated object models as part of your initial query. That way they are immediately available for use. Your typical…
...eagerly loaded query.
6. Precompile Assets
For development, having all of your assets in separate files (such as routes and configuration files) is helpful for code maintenance. For production, this isn’t necessary. To help with this, Laravel has a few artisan commands available that you can run before deploying your site:
These commands will compile your frequently used classes into a single file for quick reference. They will also combine your configuration files and routes into single files for faster loading. You can also add your own classes into the optimization that might not be added by default. The performance increase will vary, but every little bit helps.
7. JIT Compiler
Computers can’t understand PHP natively. You can’t compile PHP to bytecode and have machines running it. That’s why it is done through a middleman, like the Zend engine, that interprets your PHP files and executes C routines accordingly. As you might guess, this is slow. Every time your server runs a PHP file, it has to convert it to tokens — done by the AST parser and interpret it. It, unfortunately, has to compile it every single time, even though it gets the same result.
For your application to act fast, you need to compile it once, run it every time method, and this is what a JIT compiler does.
The recommended JIT compiler for Laravel is HHVM, created and used extensively by Facebook. It’s also used by Wikipedia, Etsy, and thousands of others.
Hence, now you know how to improve the performance of your Laravel developer while developing a web app. However, to do this a vast technical knowledge is required from your end and ample amount of time as well.