symfony-cache について
Symfony 開発向けのキャッシュ設定・管理スキルです。有効期限やプール、アダプターの選択に加え、タグによる無効化や高コストな値の同時再計算への対策を扱います。
主な機能
- 01アクセスパターンに応じたプールとアダプターの選択
- 02CacheInterface::get() と有効期限の設定
- 03タグによるエントリーの無効化
- 04高コストな再計算に早期有効期限を適用
- 05無効化動作とスタンピード対策の確認
活用シーン
- 01リポジトリーの結果や計算値のキャッシュ
- 02サードパーティーサービスの応答のキャッシュ
- 03書き込み後に関連エントリーを無効化
- 04ホットキー失効時の同時再計算を抑制
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dev-toolings/ superpowers-symfony --skill symfony-cacheインストール後、Claude Code で/symfony-cacheを入力して読み込まれたか確認します。
同梱ファイルreference.md
詳細
Symfony Cache (Symfony)
使用する場面
- リポジトリの結果、計算済みの値、サードパーティーからのレスポンスなど、コストの高い読み取りをキャッシュする場合。
- プールとそのアダプター(ファイルシステム、Redis、APCu、チェーン)の選択や設定を行う場合。
- すべてをクリアするのではなく、タグを使って無効化する場合。
- 負荷が高いときにホットキーの有効期限が切れ、すべてのリクエストで一斉に再計算が発生する場合。
- HTTP キャッシュヘッダーやキャッシュウォーマーを追加する場合、またはデプロイ時にプールをクリアする場合。
デフォルトのワークフロー
- 何がどのくらいの頻度で再計算されるか、また古くなってもよいかを特定します。
- アクセスパターンとデプロイ構成に合わせて、プールとアダプターを選択します。
- 有効期限を明示して
CacheInterface::get()を使用します。 - すべてのエントリーに、その元となるデータのタグを付け、書き込み時にはタグで無効化します。
- 再計算にコストがかかるキーでは、早期有効期限切れを有効にします。
ガードレール
- すべてのエントリーに有効期限を設定します。有効期限のないエントリーはプールから削除されません。
- ユーザー入力をハッシュ化せずにキャッシュキーに含めたり、シークレットをキャッシュキーに含めたりしないでください。
- プール全体をクリアするのではなく、タグで無効化します。全体のクリアはコールドスタートにつながります。
- キャッシュされた値は、定義上、古くなっています。正確性が必須のものはキャッシュしないでください。
- タグによる無効化にはタグ対応アダプターが必要なので、プールの設定時に選択してください。
段階的な情報開示
- 実行方針とリスク管理にはこのファイルを使用します。
- 実装の詳細が必要な場合は、リファレンスを参照します。
出力要件
- プールとアダプターの設定、および各エントリーに選択した有効期限。
- タグマップ:どの書き込みでどのタグが無効化されるか。
- 再計算にコストがかかる場合のスタンピード保護。
- 書き込みによって適切な対象が無効化されることの証拠。
リファレンス
reference.md
コメント
Markdown 対応