laravel:performance-caching について
フレームワークのキャッシュと値やクエリ結果のキャッシュ方法を扱うLaravelスキルです。キー設計、有効期限、無効化、タグ、Laravel 13以降の変更点を説明します。
主な機能
- 01ルート、設定、ビューのキャッシュ
- 02値とクエリ結果のキャッシュ
- 03鮮度要件に応じた有効期限の設定
- 04タグによる関連項目の無効化
- 05Laravel 13以降のキャッシュ変更への対応
活用シーン
- 01`Cache::remember()`によるクエリ結果のキャッシュ
- 02関連する書き込み後の複数項目の無効化
- 03Laravelのアップグレード時のキャッシュプレフィックス計画
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jpcaparas/ superpowers-laravel --skill laravel:performance-cachingインストール後、Claude Code で/laravel:performance-cachingを入力して読み込まれたか確認します。
詳細
キャッシュの基本
フレームワークのキャッシュ
php artisan route:cache
php artisan config:cache
php artisan view:cache
デプロイ時に必要に応じて、対応する clear コマンドでクリアしてください。
値とクエリ
Cache::remember("post:{$id}", 600, fn () => Post::findOrFail($id));
- データの鮮度要件に基づいて TTL を選択します
- 正確性が重要な場合は、書き込み時に明示的に無効化します
パターンと戦略
// Stable keys and scopes (e.g., tenant, locale)
Cache::remember("tenant:{$tenantId}:users:index:page:1", now()->addMinutes(5), function () {
return User::with('team')->paginate(50);
});
// Tags (supported drivers) for grouped invalidation
Cache::tags(['users'])->remember('users.index.page.1', now()->addMinutes(5), fn () => ...);
Cache::tags(['users'])->flush();
// Locks to ensure exclusive expensive work
Cache::lock('reports:daily', 30)->block(5, function () {
generateReports();
});
- 安定した名前空間付きキーを使用し、スコープを定める要素を含めます
- 大量のリクエストが同時に発生するのを防ぐため、
remember()を優先します - (対応している場合は)キャッシュタグを使って、関連するエントリをまとめて無効化します
- 計画なしに、頻繁に変化するデータやユーザー固有のデータをキャッシュするのは避けます
- キャッシュされたコードの近くに、無効化のトリガーを記載します
Laravel 13+
// Extend TTL without re-fetching/re-storing the value
Cache::touch('user_session:123', 3600);
Cache::touch('analytics_data', now()->addHours(6));
// Filesystem-backed "storage" cache driver (e.g., S3 as a K/V store)
// config/cache.php
'storage' => [
'driver' => 'storage',
'disk' => env('CACHE_STORAGE_DISK', 's3'),
'path' => env('CACHE_STORAGE_PATH', 'framework/cache/data'),
],
- セキュリティ上のデフォルト設定:
config/cache.phpではserializable_classesがfalseです。オブジェクトとしてキャッシュするクラスを許可リストに追加してください - 13.x では、デフォルトのキャッシュ/Redis のプレフィックスがアンダースコアからハイフンに変更されました。アップグレード時にキャッシュが空になるのを避けるため、
CACHE_PREFIX/REDIS_PREFIXを明示的に固定してください
コメント
Markdown 対応