Repolode
mike-bronner

mike-bronner/laravel-model-caching

Eloquentモデルやリレーションのクエリを自動でキャッシュし、モデルの変更時にキャッシュを無効化するLaravelパッケージです。

スター
2,378
フォーク
231
未解決の Issue
2
最終コミット
4 日前

これは何?

Model Caching for Laravelは、EloquentモデルにCachable traitを追加し、クエリ結果、Eager Loadしたリレーション、集計結果を、手動でキャッシュキーを指定せずにアプリケーションのキャッシュへ保存します。モデルの作成・更新・削除時には関連するキャッシュエントリーが自動的に消去され、belongsToManyリレーションのpivotテーブルの変更にも対応します。

Redis、Memcached、APC、DynamoDBのキャッシュストアで利用でき、全体またはモデルごとのTTL、書き込みの多いモデルで無効化をまとめるクールダウン期間、キャッシュが利用できない場合のデータベースへのフォールバック、テナントごとのキャッシュプレフィックスなどを設定できます。inRandomOrder()や行ロックを使うクエリはキャッシュされず、関連モデルにtraitがない場合は親のクエリもキャッシュされません。

PHP 8.3以降とLaravel 12または13が必要です。

主な機能

  • 01traitまたはベースモデルを通じて、Eloquentのクエリ、Eager Load、集計結果をキャッシュする
  • 02作成・更新・削除やpivotテーブルの変更時に、関連するキャッシュエントリーを自動で無効化する
  • 03Redis、Memcached、APC、DynamoDBのキャッシュストアに対応する
  • 04全体およびモデルごとのキャッシュTTLを設定できる
  • 05頻繁な書き込みによる無効化を抑えるクールダウン期間を設定できる
  • 06キャッシュバックエンドが停止した場合、データベースへの直接クエリにフォールバックできる

ユースケース

  • 同じEloquentクエリを何度も実行する、読み取り中心のLaravelページを高速化する
  • Cache::rememberやforgetを使った手動のキャッシュ処理を書かずにモデルデータをキャッシュする
  • テナントごとにキャッシュを分離する必要があるマルチテナントのLaravelアプリで利用する
  • AWSのマネージドキャッシュストアとしてDynamoDBを利用するアプリケーションで使う

クイックスタート

  1. 1

    Composer でパッケージをインストールします

    composer require mike-bronner/laravel-model-caching
  2. 2

    モデルが継承するベースモデルに Cachable trait を追加します

  3. 3

    必要に応じて設定ファイルを公開します

    php artisan modelCache:publish --config

使う前に知っておきたいこと

  • PHP 8.3 以降、Laravel 12 または 13 が必要です。
  • Array、File、Database のキャッシュドライバーはサポートされていません。
  • Cachable を使用していないモデルとのリレーションを eager load するクエリは、キャッシュされません。
  • DynamoDB の無効化は論理的にのみ行われるため、TTL によるクリーンアップまで古い行が残ります。

トピック

よくある質問

laravel-model-caching とは?
Eloquentモデルやリレーションのクエリを自動でキャッシュし、モデルの変更時にキャッシュを無効化するLaravelパッケージです。 Model Caching for Laravelは、EloquentモデルにCachable traitを追加し、クエリ結果、Eager Loadしたリレーション、集計結果を、手動でキャッシュキーを指定せずにアプリケーションのキャッシュへ保存します。モデルの作成・更新・削除時には関連するキャッシュエントリーが自動的に消去され、belongsToManyリレーションのpivotテーブルの変更にも対応します。
laravel-model-caching は無料で使えますか?ライセンスは?
laravel-model-caching は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
laravel-model-caching は今もメンテナンスされていますか?
活発にメンテナンス中。laravel-model-caching の最終コミットは 2026年11月3日 です。
laravel-model-caching は何に使えますか?
同じEloquentクエリを何度も実行する、読み取り中心のLaravelページを高速化する Cache::rememberやforgetを使った手動のキャッシュ処理を書かずにモデルデータをキャッシュする テナントごとにキャッシュを分離する必要があるマルチテナントのLaravelアプリで利用する AWSのマネージドキャッシュストアとしてDynamoDBを利用するアプリケーションで使う
laravel-model-caching のインストール方法は?
Composer でパッケージをインストールします: composer require mike-bronner/laravel-model-caching モデルが継承するベースモデルに Cachable trait を追加します 必要に応じて設定ファイルを公開します: php artisan modelCache:publish --config
laravel-model-caching はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/mike-bronner/laravel-model-caching

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト