1. Caching
use Illuminate\Support\Facades\Cache;
// Basic
Cache::put('key', $value, now()->addHours(1));
$value = Cache::get('key', 'default');
Cache::forget('key');
// Remember pattern
$products = Cache::remember('products:featured', 3600, function () {
return Product::with('category')->where('is_featured', true)->get();
});
// Cache tags (Redis/Memcached)
Cache::tags(['products'])->put('products:all', $products, 3600);
Cache::tags(['products'])->flush();
// Atomic locks
$lock = Cache::lock('processing-order-' . $orderId, 10);
if ($lock->get()) {
try {
// Process order
} finally {
$lock->release();
}
}
2. N+1 Query Prevention
// AppServiceProvider
use Illuminate\Database\Eloquent\Model;
Model::preventLazyLoading(!app()->isProduction());
Model::preventSilentlyDiscardingAttributes(!app()->isProduction());
// Eager load
Product::with(['category', 'tags'])->paginate(20);
// Subquery
Product::addSelect([
'latest_review' => Review::select('body')
->whereColumn('product_id', 'products.id')
->latest()
->limit(1),
])->get();
3. Laravel Telescope & Debugbar
composer require laravel/telescope --dev
php artisan telescope:install
composer require barryvdh/laravel-debugbar --dev
4. Laravel Octane
composer require laravel/octane
php artisan octane:install --server=frankenphp
php artisan octane:start --workers=4
// Concurrent tasks
use Laravel\Octane\Facades\Octane;
[$products, $categories] = Octane::concurrently([
fn () => Product::all(),
fn () => Category::all(),
]);
5. Production Optimization
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache
php artisan icons:cache
php artisan optimize
Bài tiếp theo: Livewire — Full-Stack Components.