Class yii\behaviors\CacheableWidgetBehavior
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 |
属性详情
缓存对象或者缓存组件的 ID
或者是一个可以生成缓存对象的配置数组。
默认是 cache
应用组件。
一个缓存依赖,或者是
可以生成缓存依赖的配置数组,再或者 null
,表示不需要缓存依赖。
比如,
[
'class' => 'yii\caching\DbDependency',
'sql' => 'SELECT MAX(updated_at) FROM posts',
]
上述配置是把小部件的缓存依赖上所有 posts 的最后更新时间。 如果任何 post 的更新时间发生变化,那么之前小部件缓存的内容也就失效了。
以秒为单位的缓存时长。
设置为 0
表名缓存的数据将永不过期。
默认是 60 秒或者 1 分钟。
是否开启缓存。 可以根据指定的条件对小部件缓存进行开关控制。 下面的配置是,如果传递了指定的 GET 参数,那么本次将会禁用小部件缓存。
empty(Yii::$app->request->get('disable-caching'))
一个字符串数组或者一个单独的字符串, 它用来引起被缓存内容的变化(比如 一种应用语言,一个 GET 参数)。
下面的变化设置将会导致缓存的内容, 可以根据当前应用语言的不同而产生不同版本的缓存:
[
Yii::$app->language,
]
方法详情
输出小部件内容然后标记片段缓存的结束部分。
public void afterRun($event) | ||
$event | yii\base\WidgetEvent |
|
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. |
开始标记片段缓存的起始部分。如果小部件内容能够从缓存中读取, 那么片段缓存将阻止属主小部件执行生成小部件内容的过程。
public void beforeRun($event) | ||
$event | yii\base\WidgetEvent |
|