consik / yii2-cachecleaner
Yii2 组件事件删除缓存值的行为
1.1.0
2016-12-13 05:31 UTC
Requires
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2024-09-14 19:58:47 UTC
README
安装
安装此扩展的首选方式是通过 composer。
运行以下命令之一
composer require consik/yii2-cachecleaner
或添加
"consik/yii2-cachecleaner": "^1.0"
CacheCleanerBehavior 类描述
在定义的事件后删除缓存。
属性
array $events = []
- 关联数组,键是事件名称,值是(数组|字符串|null)要删除的缓存键string $cacheComponent = 'cache'
- 应用程序缓存组件的名称
公开方法
boolean deleteCache(string|array $key)
- 删除缓存值boolean flushCache()
- 删除所有缓存值
ARUpdateCCBehavior 类描述。 #docs
在更新 ActiveRecord 属性后删除缓存值
属性
array $attributes = []
- 关联数组,键是属性名称,值是缓存值(键)string $cacheComponent = 'cache'
- 应用程序缓存组件的名称
查看 DocBlock 以获取使用示例。
示例
在 AR 更新后自动删除缓存
简单用例:我们在应用程序的某个地方缓存了 AR 对象
<?php ... if (!$model = Yii::$app->cache->get('cachedModel')) { $model = ARModel::findOne($modelID); Yii::$app->cache->set('cachedModel', $model); } ...
因此,如果应用程序中的某个地方更改或删除了此 AR 数据,我们必须删除我们的缓存值。
只需在 ARModel 中使用 CacheCleanerBehavior 即可
<?php public function behaviors() { return [[ 'class' => CacheCleanerBehavior::className(), //'cacheComponent' => 'cache', //you can define your app cache component 'events' => [ ActiveRecord::EVENT_AFTER_UPDATE => 'cachedModel' ActiveRecord::EVENT_BEFORE_DELETE => 'cachedModel' ] ]]; }
注意!当组件初始化行为时没有属性!要使用对象属性设置缓存键,请使用可调用参数定义。 #DocBlock
使用 CacheUpdateEvent
在包中有一个特殊类,用于在更改缓存值时触发事件,您可以向处理器发送更改的缓存键。
如果您想使用一个事件名称删除不同的键,可以使用此类与 CacheCleanerBehavior 一起使用。
示例
<?php public function behaviors() { return [[ 'class' => CacheCleanerBehavior::className(), 'events' => [ YOUR_EVENT_NAME => null ] ]]; } ... function someComponentAction() { ... $this->trigger(YOUR_EVENT_NAME, new CacheUpdateEvent([ 'keys' => ['keyName1', 'keyName2'], ])); ... }
定义 $events 属性的其他选项
查看 CacheCleanerBehavior::$events 的文档块