As of: 4 May 2026 · Reading time: 4 min
Key takeaways
- Optimize the performance of your Laravel application!
- Learn caching strategies, database optimization, queue processing and profiling tools.
Optimize the performance of your Laravel application! Learn caching strategies, database optimization, queue processing and profiling tools.
“Laravel is our framework of choice for complex web applications—fast, secure, and maintainable.”
– Björn Groenewold, Managing Director, Groenewold IT Solutions
Why Performance Matters
Short: Slow load times increase bounce rates.
Slow load times increase bounce rates. They harm SEO rankings. They reduce user satisfaction. All three effects are measurable — and all three are avoidable through systematic optimization.
Laravel provides a complete set of built-in optimization tools. This guide covers the most impactful ones.
1. Artisan Optimization Commands
Short: Laravel offers production optimization commands that reduce response time by 20–50%.
Laravel offers production optimization commands that reduce response time by 20–50%. Run these before each deployment.
# Cache configuration files (prevents parsing on each request)
php artisan config:cache
# Cache all routes
php artisan route:cache
# Pre-compile all Blade views
php artisan view:cache
# Cache event and listener mappings
php artisan event:cache
# Run all of the above at once
php artisan optimize
These commands eliminate repeated filesystem reads that Laravel performs on every request in development mode.
2. Solving the N+1 Query Problem
Short: The N+1 problem is a common performance killer.
The N+1 problem is a common performance killer. It occurs when a loop generates one database query per iteration.
The Problem
$posts = Post::all();
foreach ($posts as $post) {
echo $post->author->name; // Executes 1 query per post
}
100 posts = 101 queries. This compounds quickly at scale.
The Solution: Eager Loading
$posts = Post::with('author')->get();
foreach ($posts as $post) {
echo $post->author->name; // No additional queries
}
100 posts = 2 queries, regardless of how many posts there are.
Automatic Detection in Development
// In AppServiceProvider or a service provider
if ($this->app->environment('local')) {
Model::preventLazyLoading();
}
This throws an exception whenever lazy loading occurs in development — preventing N+1 problems from reaching production.
3. Database Optimization
Add Indexes for Frequently Queried Columns
Schema::table('posts', function (Blueprint $table) { $table->index('user_id'); $table->index('created_at'); $table->index(['status', 'published_at']); // Composite index }); Indexes are critical for columns used in WHERE clauses, ORDER BY, and JOIN conditions.Missing indexes on large tables cause full table scans.
Select Only Required Columns
// Loads all columns — wasteful for large rows
$users = User::all();
// Loads only what is needed
$users = User::select(['id', 'name', 'email'])->get();
This reduces both database transfer overhead and memory usage in PHP.
4. Caching Strategies
Cache Expensive Query Results
use Illuminate\Support\Facades\Cache; $posts = Cache::remember('popular_posts', now()->addHours(1), function () { return Post::with('author') ->where('views', '>', 1000) ->orderBy('views', 'desc') ->take(10) ->get(); }); The result is cached for one hour.The database query executes only on cache miss.
Invalidate the Cache When Data Changes
Post::created(function ($post) {
Cache::forget('popular_posts');
});
Cache invalidation should be tied to model events — not to time alone when data consistency matters.
Use Redis in Production
# .env for production
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
Redis significantly outperforms file-based caching for production workloads. It also enables cache sharing across multiple application servers.
5. Queue Processing for Slow Operations
Move Slow Operations to the Background
// Synchronous — blocks the request until the email is sent
Mail::to($user)->send(new WelcomeEmail($user));
// Asynchronous — the request returns immediately; email sends in background
Mail::to($user)->queue(new WelcomeEmail($user));
Operations that users do not need to wait for — email delivery, PDF generation, report compilation, external API calls — belong in queues.
Create Dedicated Jobs for Complex Background Work
php artisan make:job ProcessPodcast // Dispatch the job ProcessPodcast::dispatch($podcast); // Dispatch with a delay ProcessPodcast::dispatch($podcast)->delay(now()->addMinutes(10)); 6.Optimize the Composer Autoloader composer install --optimize-autoloader --no-dev This generates a classmap that PHP can use instead of scanning directory structures on each request.The --no-dev flag excludes development-only packages from the production bundle.
Performance Optimization Framework
Three levels of optimization work together:
Database level
- Eager loading to eliminate N+1 queries
- Proper indexes on queried columns
- Select only required columns
Application level
- Config, route, and view caching via Artisan
- Queue processing for slow background operations
- Redis for sessions and cache
Infrastructure level
- OPcache enabled in PHP configuration
- CDN for static assets
- Redis for session and cache sharing across servers
Finding the Biggest Bottlenecks
Short: Use Laravel Telescope in development to identify slow queries, cache misses, and high-frequency endpoints.
Use Laravel Telescope in development to identify slow queries, cache misses, and high-frequency endpoints. It shows the actual query count and duration for every request.
Fix the highest-impact bottlenecks first. Optimization effort should follow actual profiling data — not assumptions.
"Laravel is our framework of choice for complex web applications — fast, secure, and maintainable." — Björn Groenewold, Managing Director, Groenewold IT Solutions
About the author
Managing Director of Groenewold IT Solutions GmbH and Hyperspace GmbH
Since 2009 Björn Groenewold has been developing software solutions for the mid-market. He is Managing Director of Groenewold IT Solutions GmbH (founded 2012) and Hyperspace GmbH. As founder of Groenewold IT Solutions he has successfully supported more than 250 projects – from legacy modernisation to AI integration.
Blog recommendations
Related articles
These posts might also interest you.

Laravel Testing: Robust applications by testing 2026
Write robust tests for your Laravel application! Our guide will guide you through unit tests, feature tests, database testing and test drives development.

Laravel Deployment: From Local to Production 2026
Bring your Laravel application to production! Our guide will guide you through server setup, deployment strategies, optimization and best practices.

Laravel 12: All new features and improvements 2026
Discover all the new features of Laravel 12! Our comprehensive guide presents the most important innovations, improvements and breaking changes.
Free download
Checklist: 10 questions before software development
Key points before you start: budget, timeline, and requirements.
Get the checklist in a consultationRelevant next steps
Related services & solutions
Based on this article's topic, these pages are often the most useful next steps.
Related services
Related solutions
Related comparison
More on Laravel and next steps
This article is in the Laravel topic. In our blog overview you will find all articles; under category Laravel more posts on this subject.
For topics like Laravel we offer matching services – from app development and AI integration to legacy modernisation and maintenance. We describe typical use cases under solutions. Our cost calculators give initial estimates. Key terms are in the IT glossary. Books and long-form guides appear on the publications page; deeper articles live under topics.
If you have questions about this article or want a non-binding discussion about your project, you can book a consultation or reach us via contact. We usually respond within one working day.

