bedrockstreaming / stale-cache-bundle
将过期缓存模式添加到Symfony缓存
v2.0.0
2022-09-21 13:29 UTC
Requires
- php: ^8.0
- psr/event-dispatcher: ^1.0
- psr/log: ^1 || ^2 || ^3
- symfony/cache: ^5.4 || ^6.0
- symfony/cache-contracts: ^2.0 || ^3.0
- symfony/config: ^5.4 || ^6.0
- symfony/dependency-injection: ^5.4 || ^6.0
- symfony/http-kernel: ^5.4 || ^6.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.4.0
- m6web/php-cs-fixer-config: ^2.0
- phpspec/prophecy-phpunit: ^2.0
- phpstan/phpstan: ^1.6
- phpunit/phpunit: ^9.5
- rector/rector: ^0.13.8
- symfony/flex: ^2.2
- symfony/polyfill-php80: ^1.16.0
- symfony/var-dumper: ^5.4 || ^6.0
README
简介
此包旨在为symfony/cache
组件提供过期缓存功能。基本上,它执行以下步骤
- 通过“过期时间”扩展缓存项的寿命
- 在过期时间内,如果检索到缓存项,尝试重新生成它
- 如果重新生成失败并带有特定标记的错误,则返回最初缓存的值
用法
配置
首先,您应该配置每个过期缓存服务
bedrock_stale_cache: decorated_cache_pools: stale_cache_service_id: # Desired id for this new stale cache instance cache_pool: cache_pool_id # Cache pool on top of which stale cache will be used max_stale: 3600 # Stale period duration, in seconds enable_debug_logs: true # Optional (defaults to false), produce a bunch of debug logs
它将声明一个@stale_cache_service_id
,您可以用作注入依赖。过期服务将实现Symfony\Contracts\Cache\CacheInterface
,因此您需要使用get
方法来检索缓存项。如果您需要标记功能,可以使用Symfony\Contracts\Cache\TagAwareCacheInterface
。
它与旧的Symfony\Component\Cache\Adapter\AdapterInterface
不兼容。
允许某些错误使用过期缓存
为了使用过期缓存,您必须在自定义错误中实现Bedrock\StaleCacheBundle\Exception\UnavailableResourceException
。可以使用allowStaleCacheUsage
方法进行一些自定义逻辑,或者您可以硬编码一个return true
。
事件
在过期缓存使用时发送一个Bedrock\StaleCacheBundle\Event\StaleCacheUsage
事件。强烈建议记录它,并关联相关错误。
日志
可以启用调试日志以确保正确使用过期缓存。在生产环境中不应启用,因为它可能导致性能问题。
贡献
您可以执行make quality test
来执行质量检查和测试。还有一些make目标可以帮助您检查此包是否在每种Symfony版本上正确支持
make composer-install-sf4
make composer-install-sf5
make composer-install-sf6