berthott/laravel-api-cache

Laravel 缓存 API 响应助手

3.0.8 2023-11-28 09:21 UTC

This package is auto-updated.

Last update: 2024-09-12 15:04:43 UTC


README

一个用于缓存完整 API 响应的助手。轻松缓存 Laravel API 的完整响应。

安装

$ composer require berthott/laravel-api-cache

使用

  • 安装并启用此包后,它会自动缓存所有 GET 请求的响应。
    • 此包假设您的路由名称根据 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。