consik/yii2-cachecleaner

Yii2 组件事件删除缓存值的行为

1.1.0 2016-12-13 05:31 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:58:47 UTC


README

Latest Stable Version Total Downloads License

安装

安装此扩展的首选方式是通过 composer

运行以下命令之一

composer require consik/yii2-cachecleaner

或添加

"consik/yii2-cachecleaner": "^1.0"

CacheCleanerBehavior 类描述

在定义的事件后删除缓存。

属性

  1. array $events = [] - 关联数组,键是事件名称,值是(数组|字符串|null)要删除的缓存键
  2. string $cacheComponent = 'cache' - 应用程序缓存组件的名称

公开方法

  1. boolean deleteCache(string|array $key) - 删除缓存值
  2. boolean flushCache() - 删除所有缓存值

ARUpdateCCBehavior 类描述。 #docs

在更新 ActiveRecord 属性后删除缓存值

属性

  1. array $attributes = [] - 关联数组,键是属性名称,值是缓存值(键)
  2. 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 的文档块