visol/cacheable
Composer 安装命令:
composer require visol/cacheable
包简介
Allows caching the return value of Flow Framework methods through annotations
README 文档
README
This Flow Framework package allows caching the return value of Flow Framework methods through annotations.
Features
- Configure the lifetime
- Configure cache tags
- Optionally protect cache entries with the currently authenticated account or the roles associated to the currently authenticated
- Use a persistent or a transient cache
- This is built on top of the Flow Framework. The caching configuration can be adjusted based on the project's needs.
Installation
To get the latest version of Cacheable, require the project using Composer:
composer require visol/cacheable
Usage
For annotations to work, make sure to import the respective namespaces in your class:
use Visol\Cacheable\Annotations as Cacheable; use Visol\Cacheable\Annotations\Method;
You can now add the annotation to methods whose results you want to be cached:
/** * @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 }
This would cache the return value for 30 minutes in the persistent cache, taking into account all roles of the currently authenticated user, tagged with rest_service.
Warning: Only use this annotation for static or static like methods. E.g. fetching external data or performing calculations depending solely on supplied parameters.
Cache lifetime configuration
You can configure the cache lifetime in seconds:
lifetime=1800
This will cache your data for 30 minutes.
Cache tags configuration
You can configure an array of cache tags:
tags={"tag_1", "tag_2"}
This allows you to programmatically flush the cache in your code.
Security method configuration
The cached data can either be bound to the currently authenticated account or to the roles of the currently authenticated account.
No protection (default):
security=Method::SECURITY_NONE
Account:
security=Method::SECURITY_ACCOUNT
Roles:
security=Method::SECURITY_ROLES
Cache type
By default, two caches are configured:
Persistent cache (default):
cacheIdentifier=Method::CACHE_PERSISTENT
Stores the data as persistent data in the FileBackend.
Transient cache:
cacheIdentifier=Method::CACHE_TRANSIENT
Stores the data in the TransientMemoryBackend.
If you need to adjust configuration to your needs, override the caches in your application package's or distribution's Caches.yaml. See Configuration/Caches.yaml for the default configuration.
Cache Entry Identifier
A cache entry identifier is automatically generated based on namespace, arguments and security settings.
By default the namespace is set to the class and method name.
All supplied arguments are used as is. Be cautious when using complex objects.
Credits
visol digitale Dienstleistungen GmbH, www.visol.ch
Inspired by:
- Annotation Type Cacheable in Spring Framework
- Python function caching
- Packagist package yateric/cacheable
License
Cacheable is licensed under The MIT License (MIT).
visol/cacheable 适用场景与选型建议
visol/cacheable 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5.33k 次下载、GitHub Stars 达 5, 最近一次更新时间为 2020 年 11 月 03 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 visol/cacheable 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 visol/cacheable 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 5.33k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 5
- 点击次数: 5
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-11-03