没有命名空间的类 yii yii\base yii\behaviors yii\caching yii\captcha yii\console yii\console\controllers yii\console\widgets yii\data yii\db yii\db\conditions yii\db\cubrid yii\db\cubrid\conditions yii\db\mssql yii\db\mssql\conditions yii\db\mysql yii\db\oci yii\db\oci\conditions yii\db\pgsql yii\db\sqlite yii\db\sqlite\conditions yii\di yii\filters yii\filters\auth yii\grid yii\helpers yii\i18n yii\log yii\mail yii\mutex yii\rbac yii\rest yii\test yii\validators yii\web yii\widgets

Class yii\behaviors\CacheableWidgetBehavior

继承yii\behaviors\CacheableWidgetBehavior » yii\base\Behavior » yii\base\BaseObject
实现yii\base\Configurable
可用版本自2.0.14
源码 https://github.com/yiichina/yii2/blob/api/framework/behaviors/CacheableWidgetBehavior.php

Cacheable widget behavior 自动根据指定的缓存时长和缓存依赖缓存小部件的内容。

如果应用已经配置了 cache 组件,这个行为可以不用任何配置就可以直接使用。 默认情况下,小部件内容的缓存时长为一分钟。

下面的例子是,如果没有任何后续 post 更新,那么将会无限时长地缓存 posts 小部件的内容。

use yii\behaviors\CacheableWidgetBehavior;

public function behaviors()
{
    return [
        [
            'class' => CacheableWidgetBehavior::className(),
            'cacheDuration' => 0,
            'cacheDependency' => [
                'class' => 'yii\caching\DbDependency',
                'sql' => 'SELECT MAX(updated_at) FROM posts',
            ],
        ],
    ];
}

公共属性

隐藏继承的属性

属性类型描述被定义在
$cache yii\caching\CacheInterface|string|array 缓存对象或者缓存组件的 ID 或者是一个可以生成缓存对象的配置数组。 默认是 cache 应用组件。 yii\behaviors\CacheableWidgetBehavior
$cacheDependency yii\caching\Dependency|array|null 一个缓存依赖,或者是 可以生成缓存依赖的配置数组,再或者 null,表示不需要缓存依赖。 比如, `php [ 'class' => 'yii\caching\DbDependency', 'sql' => 'SELECT MAX(updated_at) FROM posts', ] ` 上述配置是把小部件的缓存依赖上所有 posts 的最后更新时间。 如果任何 post 的更新时间发生变化,那么之前小部件缓存的内容也就失效了。 yii\behaviors\CacheableWidgetBehavior
$cacheDuration integer 以秒为单位的缓存时长。 设置为 0 表名缓存的数据将永不过期。 默认是 60 秒或者 1 分钟。 yii\behaviors\CacheableWidgetBehavior
$cacheEnabled boolean 是否开启缓存。 可以根据指定的条件对小部件缓存进行开关控制。 下面的配置是,如果传递了指定的 GET 参数,那么本次将会禁用小部件缓存。 `php empty(Yii::$app->request->get('disable-caching')) ` yii\behaviors\CacheableWidgetBehavior
$cacheKeyVariations string[]|string 一个字符串数组或者一个单独的字符串, 它用来引起被缓存内容的变化(比如 一种应用语言,一个 GET 参数)。 下面的变化设置将会导致缓存的内容, 可以根据当前应用语言的不同而产生不同版本的缓存: `php [ Yii::$app->language, ] ` yii\behaviors\CacheableWidgetBehavior
$owner yii\base\Component|null The owner of this behavior yii\base\Behavior

公共方法

隐藏继承的方法

方法描述被定义在
__call() Calls the named method which is not a class method. yii\base\BaseObject
__construct() Constructor. yii\base\BaseObject
__get() Returns the value of an object property. yii\base\BaseObject
__isset() Checks if a property is set, i.e. defined and not null. yii\base\BaseObject
__set() Sets value of an object property. yii\base\BaseObject
__unset() Sets an object property to null. yii\base\BaseObject
afterRun() 输出小部件内容然后标记片段缓存的结束部分。 yii\behaviors\CacheableWidgetBehavior
attach() Attaches the behavior object to the component. yii\behaviors\CacheableWidgetBehavior
beforeRun() 开始标记片段缓存的起始部分。如果小部件内容能够从缓存中读取, 那么片段缓存将阻止属主小部件执行生成小部件内容的过程。 yii\behaviors\CacheableWidgetBehavior
canGetProperty() Returns a value indicating whether a property can be read. yii\base\BaseObject
canSetProperty() Returns a value indicating whether a property can be set. yii\base\BaseObject
className() Returns the fully qualified name of this class. yii\base\BaseObject
detach() Detaches the behavior object from the component. yii\base\Behavior
events() Declares event handlers for the $owner's events. yii\base\Behavior
hasMethod() Returns a value indicating whether a method is defined. yii\base\BaseObject
hasProperty() Returns a value indicating whether a property is defined. yii\base\BaseObject
init() Initializes the object. yii\base\BaseObject

属性详情

$cache 公共 属性

缓存对象或者缓存组件的 ID 或者是一个可以生成缓存对象的配置数组。 默认是 cache 应用组件。

$cacheDependency 公共 属性

一个缓存依赖,或者是 可以生成缓存依赖的配置数组,再或者 null,表示不需要缓存依赖。

比如,

[
    'class' => 'yii\caching\DbDependency',
    'sql' => 'SELECT MAX(updated_at) FROM posts',
]

上述配置是把小部件的缓存依赖上所有 posts 的最后更新时间。 如果任何 post 的更新时间发生变化,那么之前小部件缓存的内容也就失效了。

$cacheDuration 公共 属性

以秒为单位的缓存时长。 设置为 0 表名缓存的数据将永不过期。 默认是 60 秒或者 1 分钟。

public integer $cacheDuration 60
$cacheEnabled 公共 属性

是否开启缓存。 可以根据指定的条件对小部件缓存进行开关控制。 下面的配置是,如果传递了指定的 GET 参数,那么本次将会禁用小部件缓存。

empty(Yii::$app->request->get('disable-caching'))
public boolean $cacheEnabled true
$cacheKeyVariations 公共 属性

一个字符串数组或者一个单独的字符串, 它用来引起被缓存内容的变化(比如 一种应用语言,一个 GET 参数)。

下面的变化设置将会导致缓存的内容, 可以根据当前应用语言的不同而产生不同版本的缓存:

[
    Yii::$app->language,
]

方法详情

afterRun() 公共 方法

输出小部件内容然后标记片段缓存的结束部分。

public void afterRun($event)
$event yii\base\WidgetEvent

Widget::EVENT_AFTER_RUN 事件。

attach() 公共 方法

Attaches the behavior object to the component.

The default implementation will set the $owner property and attach event handlers as declared in events(). Make sure you call the parent implementation if you override this method.

public void attach($owner)
$owner yii\base\Component

The component that this behavior is to be attached to.

beforeRun() 公共 方法

开始标记片段缓存的起始部分。如果小部件内容能够从缓存中读取, 那么片段缓存将阻止属主小部件执行生成小部件内容的过程。

public void beforeRun($event)
$event yii\base\WidgetEvent

Widget::EVENT_BEFORE_RUN 事件。