hyperia/yii2-clear-cache-behavior

特定事件下清理Yii2缓存的行为

v2.0.0 2020-10-28 11:21 UTC

This package is auto-updated.

Last update: 2024-08-28 19:42:19 UTC


README

GitHub license Latest Stable Version

特定事件下清理Yii2缓存的行为

安装

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

运行以下命令之一:

composer require hyperia/yii2-clear-cache-behavior:"*"

或添加

"hyperia/yii2-clear-cache-behavior": "*"

到您的composer.json文件的要求部分。

配置(使用方法)

在ActiveRecord模型类中,在插入、更新或删除后使标签失效

use yii\db\ActiveRecord;
use hyperia\behaviors\ClearCacheBehavior;

class Model extends ActiveRecord
{
    private const CACHE_KEY = '~model~';

    public function behaviors()
    {
        return [
            ...
            'clearCache' => [
                'class' => ClearCacheBehavior::class,
                'events' => [
                    ActiveRecord::EVENT_AFTER_INSERT,
                    ActiveRecord::EVENT_AFTER_UPDATE,
                    ActiveRecord::EVENT_AFTER_DELETE
                ],
                'type' => ClearCacheBehavior::TYPE_INVALIDATE_TAG,
                'value' => static::CACHE_KEY
            ],
        ];
    }
}

参数说明

events

数组

确定在哪个事件下删除缓存。当您想设置具有相同设置的Event时。

默认值

[
    ActiveRecord::EVENT_AFTER_INSERT,
    ActiveRecord::EVENT_AFTER_UPDATE,
    ActiveRecord::EVENT_AFTER_DELETE
]

cache

字符串

yii组件配置中缓存组件的名称
默认: "cache"

value

字符串 | 数组 | 闭包
确定要删除缓存的部分 仅当事件被设置时

type

字符串
设置如何删除缓存 仅当事件被设置时
类型

  • TYPE_INVALIDATE_TAG : 调用yii\caching\TagDependency::invalidate($cacheObject, $value);
  • TYPE_FLUSH : 调用缓存对象的flush()方法(通过缓存参数的值)
  • TYPE_DELETE : 调用缓存对象的delete($value)方法(通过缓存参数的值)

events_with_settings

数组
表示多个事件设置的数组。确定在哪个事件下删除缓存。当您想设置多个Event时

简单示例

    'eventsWithSettings' => [
          \yii\web\Controller::EVENT_BEFORE_ACTION => [
              'type' => ClearCacheBehavior::TYPE_INVALIDATE_TAG,
              'value' => static::CACHE_KEY
          ],
          \yii\web\Controller::EVENT_AFTER_ACTION => [
              'type' => ClearCacheBehavior::TYPE_DELETE,
              'value' => function($event) use ($model) {
                  return $model->id;
              }
          ]
    ],