berthott / laravel-api-cache
Laravel 缓存 API 响应助手
3.0.8
2023-11-28 09:21 UTC
Requires (Dev)
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^10.0
README
一个用于缓存完整 API 响应的助手。轻松缓存 Laravel API 的完整响应。
安装
$ composer require berthott/laravel-api-cache
使用
- 安装并启用此包后,它会自动缓存所有 GET 请求的响应。
- 此包假设您的路由名称根据 Laravel 的 Route::apiResource 助手命名(格式为
表名.方法
)。 - 响应通过表名分组(更具体地说,是路由名的第一部分,因此也支持自定义路由名)。
- 此包假设您的路由名称根据 Laravel 的 Route::apiResource 助手命名(格式为
- 要自动清除与您的模型对应的缓存,请将
FlushesApiCache
特性添加到您的模型中。- 这将清除任何模型创建、更新或删除时的缓存。
- 要同时清除相关模型,覆盖 Traits 的
cacheDependencies
方法并返回相关路由名的列表。
- 有一个
FlushApiCache
事件监听器,可以与自定义模型事件连接。
选项
要更改默认选项,请使用以下命令:
$ php artisan vendor:publish --provider="berthott\ApiCache\ApiCacheServiceProvider" --tag="config"
enabled
:启用 API 缓存。默认为env('CACHE_API', false)
。ignoreRoutes
:要忽略缓存的路由名数组。默认为[]
。lifetime
:缓存的有效期(以天为单位)。默认为14
。key
:一个键,用于添加到每个 Redis 缓存中,以便使用单个 Redis 服务器并避免名称冲突。默认为env('CACHE_API_KEY', env('APP_NAME', 'laravel'))
。
架构
- 实际缓存由
ApiCacheService
完成 - 使用存储键将请求/缓存响应连接到特定模型/实体
ApiCacheMiddleware
截获所有 HTTP 请求并调用ApiCacheService
FlushesApiCache
特性观察创建/更新/删除模型,并将清除相应存储的缓存
兼容性
与 Laravel 10.x 进行了测试。
许可
请参阅许可文件。版权所有 © 2023 Jan Bladt。