Chuyển đến nội dung chính

第 16 課:快取、會話和效能

快取驅動程式(Redis、Memcached、檔案)。快取標籤,原子鎖。會話管理。 N+1查詢預防,查詢監控。 Laravel 調試欄、望遠鏡。辛烷(Swoole/FrankenPHP)。

💻 程式設計 — 第 16 課 第 16 課:快取、會話和效能

Laravel:從基礎到高級

第 4 部分:進階功能

亞洲開發網

1. 快取

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查詢預防

// 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 望遠鏡與調試欄

composer require laravel/telescope --dev
php artisan telescope:install

composer require barryvdh/laravel-debugbar --dev

4.Laravel 辛烷

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. 生產優化

php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache
php artisan icons:cache
php artisan optimize

下一篇: Livewire — 全端組件。