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

レッスン 16: キャッシュ、セッション、パフォーマンス

キャッシュドライバー (Redis、Memcached、ファイル)。キャッシュタグ、アトミックロック。セッション管理。 N+1 クエリ防止、クエリ監視。 Laravel デバッグバー、テレスコープ。オクタン (Swoole/FrankenPHP)。

💻 プログラミング — レッスン 16 レッスン 16: キャッシュ、セッション、パフォーマンス

Laravel: 基本から上級まで

パート 4: 高度な機能

xdev.asia

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 Telescope とデバッグバー

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 — フルスタック コンポーネント。