DEV Community

Morcos Gad
Morcos Gad

Posted on

5 1

Quick & Easy Ways to Speed - Laravel Website

It's great, fast and useful ways I found in this wonderful article
https://ashallendesign.co.uk/blog/6-quick-and-easy-ways-to-speed-up-your-laravel-websiteto help you make your project as fast as possible. 6 tips I hope you will benefit from them in your future projects.

  • Only fetch the fields you need in your database queries
$users = User::all();

foreach($users as $user) {
    // Do something here
}

// Now
$users = User::select([id, first_name, last_name])->get();

foreach($users as $user) {
    // Do something here
}
Enter fullscreen mode Exit fullscreen mode
  • Use eager loading wherever possible
$comments = Comment::all();

foreach ($comments as $comment ) {
    print_r($comment->author->name);
}

// Now
$comments = Comment::with('authors')->get();

foreach ($comments as $comment ) {
    print_r($comment->author->name);
}
Enter fullscreen mode Exit fullscreen mode
  • Get rid of any unneeded or unwanted packages

Open up your composer.json file and look through each of your dependencies. For each of your dependencies, ask yourself "do I really need this package?". Your answer is mostly going to be yes, but for some of them it might not be.
Ask yourself "Can I write this code myself and remove this entire package"? Of course, due to time constraints, it is not always possible to write the code yourself because you will have to write it, test it and then maintain it. At least with the package, you're using the open source community to do these things for you. But, if the package is simple and quick to replace with your own code, I'd consider removing it.

  • Cache, cache, cache!
php artisan route:cache
php artisan route:clear
php artisan config:cache
php artisan config:clear

// Caching queries and values
$users = DB::table('users')->get();

$users = Cache::remember('users', 120, function () {
    return DB::table('users')->get();
});
Enter fullscreen mode Exit fullscreen mode
  • Use the latest version of PHP

  • Make use of the queues

One way that you can cut down the performance time is to make use of the Laravel queues. If there’s any code that runs in your controller or classes in a request that isn’t particularly needed for the web browser response, we can usually queue it.

class ContactController extends Controller
{
    /**
     * Store a new podcast.
     *
     * @param    Request  $request
     * @return  JsonResponse
     */
    public function store(ContactFormRequest $request)
    {
        $request->storeContactFormDetails();
        Mail::to('mail@ashallendesign.co.uk')->send(new ContactFormSubmission);

        return response()->json(['success' => true]);
    }
}
Enter fullscreen mode Exit fullscreen mode

To make use of the queue system, we could update the code to the following instead

class ContactController extends Controller
{
    /**
     * Store a new podcast.
     *
     * @param    Request  $request
     * @return  JsonResponse
     */
    public function store(ContactFormRequest $request)
    {
        $request->storeContactFormDetails();

        dispatch(function () {
             Mail::to('mail@ashallendesign.co.uk')->send(new ContactFormSubmission);
         })->afterResponse();

        return response()->json(['success' => true]);
    }
}
Enter fullscreen mode Exit fullscreen mode

I hope you benefit from the article and I wish you a happy code.

Sentry blog image

How I fixed 20 seconds of lag for every user in just 20 minutes.

Our AI agent was running 10-20 seconds slower than it should, impacting both our own developers and our early adopters. See how I used Sentry Profiling to fix it in record time.

Read more

Top comments (0)

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay