visol / cacheable
允许通过注解缓存 Flow 框架方法的返回值
0.3.0
2022-11-02 13:28 UTC
Requires
- neos/flow: ~5.3 || ~6.0 || ~7.0 || ~8.0 || dev-master
This package is auto-updated.
Last update: 2024-08-30 01:12:00 UTC
README
此 Flow 框架包允许通过注解缓存 Flow 框架方法的返回值。
特性
- 配置生命周期
- 配置缓存标签
- 可选地使用当前认证账户或当前认证账户关联的角色来保护缓存条目
- 使用持久缓存或临时缓存
- 此功能基于 Flow 框架构建。缓存配置可以根据项目需求进行调整。
安装
要获取 Cacheable 的最新版本,请使用 Composer 引入项目
composer require visol/cacheable
用法
为了使注解生效,确保在类中导入相应的命名空间
use Visol\Cacheable\Annotations as Cacheable; use Visol\Cacheable\Annotations\Method;
现在您可以向希望缓存结果的函数添加注解
/** * @return array * @Cacheable\Method(lifetime=1800, tags={"rest_service"}, security=Method::SECURITY_ROLES, cacheIdentifier=Method::CACHE_PERSISTENT) */ public function executeLongRunningTask(string $someArgument): array { // Fetch data from API or perform long running calculations }
这将把返回值缓存到持久缓存中,时间为 30 分钟,考虑当前认证用户的全部角色,并带有 rest_service 标签。
警告:仅对静态或类似于静态的方法使用此注解。例如,获取外部数据或仅依赖于提供的参数执行计算。
缓存生命周期配置
您可以在秒中配置缓存生命周期
lifetime=1800
这将使您的数据缓存 30 分钟。
缓存标签配置
您可以配置一个缓存标签数组
tags={"tag_1", "tag_2"}
这允许您在代码中按程序清除缓存。
安全方法配置
缓存数据可以绑定到当前认证账户或当前认证账户的角色。
无保护 (默认)
security=Method::SECURITY_NONE
账户
security=Method::SECURITY_ACCOUNT
角色
security=Method::SECURITY_ROLES
缓存类型
默认情况下,配置了两个缓存
持久缓存 (默认)
cacheIdentifier=Method::CACHE_PERSISTENT
将数据作为持久数据存储在 FileBackend
中。
临时缓存
cacheIdentifier=Method::CACHE_TRANSIENT
将数据存储在 TransientMemoryBackend
中。
如果您需要根据需要调整配置,请覆盖应用程序包或发行版的 Caches.yaml
中的缓存。有关默认配置,请参阅 Configuration/Caches.yaml
。
缓存条目标识符
缓存条目标识符基于命名空间、参数和安全设置自动生成。
默认情况下,命名空间设置为类名和方法名。
所有提供的参数都按原样使用。在使用复杂对象时要小心。
致谢
visol digitale Dienstleistungen GmbH, www.visol.ch
灵感来源于
- Spring 框架中的 Cacheable 注解类型
- Python 函数缓存
- Packagist 软件包 yateric/cacheable
许可证
Cacheable 根据 MIT 许可证 (MIT) 许可。