Repolode
mike-bronner

mike-bronner/laravel-model-caching

Laravel 扩展包,自动缓存 Eloquent 模型与关联查询,数据变更时自动失效。

Star
2,378
Fork
231
未关闭 Issue
2
最近提交
4天前

这是什么?

Model Caching for Laravel 为 Eloquent 模型添加 Cachable 特性,使查询结果、预加载关联和聚合查询自动写入应用缓存,无需手动管理缓存键。模型创建、更新或删除时,相关缓存会自动清除,belongsToMany 的中间表变更也会处理。

该扩展支持 Redis、Memcached、APC 和 DynamoDB 缓存存储,并提供全局或按模型设置的 TTL、用于减少高频写入时频繁失效的冷却时间窗口、缓存不可用时回退到数据库的选项,以及多租户缓存前缀。使用 inRandomOrder() 或行锁的查询不会被缓存;预加载的关联模型若未使用该特性,会导致父查询也不被缓存。

需要 PHP 8.3 及以上版本与 Laravel 12 或 13。

核心功能

  • 01通过 Trait 或基类为 Eloquent 查询、预加载和聚合添加缓存
  • 02创建、更新、删除及中间表变更时自动清除相关缓存
  • 03支持 Redis、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,则整个查询都不会被缓存。
  • DynamoDB 的失效只是逻辑上的,过期数据会保留到 TTL 清理之后。

标签

常见问题

laravel-model-caching 是什么?
Laravel 扩展包,自动缓存 Eloquent 模型与关联查询,数据变更时自动失效。 Model Caching for Laravel 为 Eloquent 模型添加 Cachable 特性,使查询结果、预加载关联和聚合查询自动写入应用缓存,无需手动管理缓存键。模型创建、更新或删除时,相关缓存会自动清除,belongsToMany 的中间表变更也会处理。
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

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目