Class yii\filters\PageCache

继承yii\filters\PageCache » yii\base\ActionFilter » yii\base\Behavior » yii\base\BaseObject
实现yii\base\Configurable, yii\base\DynamicContentAwareInterface
Uses Traitsyii\base\DynamicContentAwareTrait
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/filters/PageCache.php

PageCache 实现整个页面的服务器端缓存.

它是一个动作过滤器, 可以添加到控制器并处理beforeAction事件.

要使用 PageCache, 请在控制器类的behaviors()方法中对其进行声明.

在下面的示例中, 该过滤器将应用于index动作, 并将整个页面缓存最多60秒, 或直到post表中条目的计数发生更改为止. 它还可根据应用程序语言存储页面的不同版本.

public function behaviors()
{
    return [
        'pageCache' => [
            'class' => 'yii\filters\PageCache',
            'only' => ['index'],
            'duration' => 60,
            'dependency' => [
                'class' => 'yii\caching\DbDependency',
                'sql' => 'SELECT COUNT(*) FROM post',
            ],
            'variations' => [
                \Yii::$app->language,
            ]
        ],
    ];
}

公共属性

隐藏继承的属性

属性类型描述定义在
$cache yii\caching\CacheInterface|array|string 缓存对象或缓存对象的应用程序组件ID. yii\filters\PageCache
$cacheCookies boolean|array 一个指示是否要缓存所有 cookie 的布尔值, 或指示可以缓存哪些 cookie 的 cookie 名称列表. yii\filters\PageCache
$cacheHeaders boolean|array 一个指示是否要缓存所有 HTTP 标头的布尔值, 或指示可以缓存哪些 HTTP 标头的 HTTP 标头名称列表(不区分大小写). yii\filters\PageCache
$dependency array|yii\caching\Dependency 缓存内容所依赖的依赖项. yii\filters\PageCache
$duration integer 数据在缓存中保持有效的秒数. yii\filters\PageCache
$dynamicPlaceholders array 占位符列表. yii\base\DynamicContentAwareTrait
$enabled boolean 是否启用页面缓存. yii\filters\PageCache
$except array 此过滤器不适用的动作ID列表, 列表中的动作将不被过滤. yii\base\ActionFilter
$only array 此过滤器应适用的动作ID列表, 仅列表中的动作被过滤. yii\base\ActionFilter
$owner yii\base\Component|null 该行为的所有者. yii\base\Behavior
$variations string[]|string 会导致缓存内容变化的因素列表. yii\filters\PageCache
$varyByRoute boolean 是否根据路由来区分缓存的内容. yii\filters\PageCache
$view yii\base\View 用于缓存的视图组件. yii\filters\PageCache

公共方法

隐藏继承的方法

方法描述定义在
__call() 调用不是类方法的已命名方法. yii\base\BaseObject
__construct() 构造函数. yii\base\BaseObject
__get() 返回对象属性的值. yii\base\BaseObject
__isset() 检查属性是否已设置, 即已定义且不为null. yii\base\BaseObject
__set() 设置对象属性的值. yii\base\BaseObject
__unset() 将对象属性设置为null. yii\base\BaseObject
addDynamicPlaceholder() 为动态内容添加一个占位符. yii\base\DynamicContentAwareTrait
afterAction() 执行动作后立即调用此方法. yii\base\ActionFilter
afterFilter() yii\base\ActionFilter
afterRestoreResponse() 在响应恢复完成之后(但在发送响应之前)立即调用此方法. yii\filters\PageCache
attach() 将行为对象附加到组件. yii\base\ActionFilter
beforeAction() 在执行动作之前(在所有可能的过滤器之后)立即调用此方法. yii\filters\PageCache
beforeCacheResponse() 在响应(response)缓存即将开始之前就调用此方法. yii\filters\PageCache
beforeFilter() yii\base\ActionFilter
cacheResponse() 缓存响应(response)属性. yii\filters\PageCache
canGetProperty() 返回一个值, 指示属性是否可读. yii\base\BaseObject
canSetProperty() 返回一个值, 指示属性是否可写. yii\base\BaseObject
className() 返回此类的完全限定名称. yii\base\BaseObject
detach() 从组件中分离行为对象. yii\base\ActionFilter
events() 声明 所有者 事件的事件处理程序. yii\base\Behavior
getDynamicPlaceholders() 返回动态内容的占位符列表. yii\base\DynamicContentAwareTrait
getView() yii\filters\PageCache
hasMethod() 返回一个值, 指示方法是否已定义. yii\base\BaseObject
hasProperty() 返回一个值, 指示属性是否已定义. yii\base\BaseObject
init() 初始化对象. yii\filters\PageCache
setDynamicPlaceholders() 设置动态内容的占位符列表. yii\base\DynamicContentAwareTrait

受保护的方法

隐藏继承的方法

方法描述定义在
calculateCacheKey() yii\filters\PageCache
getActionId() 通过将 yii\base\Action::$uniqueId 转换为相对于模块的ID来返回动作ID. yii\base\ActionFilter
isActive() 返回一个值, 指示过滤器对于给定动作是否处于活动状态. yii\base\ActionFilter
restoreResponse() 从给定数据恢复响应(response)属性. yii\filters\PageCache
updateDynamicContent() 用评估后的动态语句的结果替换$content中的占位符. yii\base\DynamicContentAwareTrait

常量

隐藏继承的常量

常量描述定义在
PAGE_CACHE_VERSION 1 页面高速缓存版本, 用于在高速缓存的数据格式更改时检测高速缓存值中的不兼容性. yii\filters\PageCache

属性详情

$cache public 属性

缓存对象或缓存对象的应用程序组件ID.

创建 PageCache 对象后, 如果要更改此属性, 则应仅将其分配一个缓存对象.

从版本 2.0.2 开始, 这也可以是用于创建对象的配置数组.

$cacheCookies public 属性 (可用自版本: 2.0.4)

一个指示是否要缓存所有 cookie 的布尔值, 或指示可以缓存哪些 cookie 的 cookie 名称列表.

缓存 cookies 时要格外小心, 因为它可能会将存储在 cookies 中的敏感数据或隐私数据泄露给不需要的用户.

参见 insertResponseCollectionIntoData().

public boolean|array $cacheCookies false
$cacheHeaders public 属性 (可用自版本: 2.0.4)

一个指示是否要缓存所有 HTTP 标头的布尔值, 或指示可以缓存哪些 HTTP 标头的 HTTP 标头名称列表(不区分大小写).

Note: 如果你的 HTTP 标头包含敏感信息, 则应将可以缓存的表头列入白名单.

参见 insertResponseCollectionIntoData().

public boolean|array $cacheHeaders true
$dependency public 属性

缓存内容所依赖的依赖项. 它可以是 yii\caching\Dependency 对象, 也可以是用于创建依赖项对象的配置数组. 例如:

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

将使输出缓存取决于所有帖子(posts)的最后修改时间. 如果任何一个帖子(posts)的修改时间发生更改, 则缓存的内容将无效.

如果启用了 $cacheCookies$cacheHeaders, 则还应启用 yii\caching\Dependency::$reusable 以节省性能. 这是因为 cookies 和表头当前与实际页面内容分开存储, 从而导致对依赖项进行了两次评估.

$duration public 属性

数据在缓存中保持有效的秒数. 用0表示缓存的数据将永不过期.

public integer $duration 60
$enabled public 属性

是否启用页面缓存. 你可以使用此属性根据特定设置打开和关闭页面缓存(例如, 仅对 GET 请求启用页面缓存).

public boolean $enabled true
$variations public 属性

会导致缓存内容变化的因素列表. 每个因子是表示变化的字符串(eg. 语言(language), GET 参数). 以下变化设置将导致内容根据当前应用程序语言以不同版本进行缓存:

[
    Yii::$app->language,
]
public string[]|string $variations null
$varyByRoute public 属性

是否根据路由来区分缓存的内容. 路由由请求的控制器ID和动作ID组成. 默认为true.

public boolean $varyByRoute true
$view public 属性

用于缓存的视图组件. 如果未设置, 则将使用默认的应用程序视图组件 yii\web\Application::$view.

public yii\base\View $view null

方法详情

afterRestoreResponse() public 方法 (可用自版本: 2.0.11)

在响应恢复完成之后(但在发送响应之前)立即调用此方法.

你可以重写此方法以在发送响应之前进行最后的准备.

public void afterRestoreResponse ( $data )
$data array|null

存储在缓存项中的附加数据的数组, 或null.

beforeAction() public 方法

在执行动作之前(在所有可能的过滤器之后)立即调用此方法.

你可以重写此方法,以便为该动作做最后的准备.

public boolean beforeAction ( $action )
$action yii\base\Action

要执行的动作.

return boolean

该动作是否应该继续执行.

beforeCacheResponse() public 方法 (可用自版本: 2.0.11)

在响应(response)缓存即将开始之前就调用此方法.

你可以重写此方法以通过返回false来取消缓存, 或者通过返回一个数组而不是true来将其他数据存储在缓存项中.

public boolean|array beforeCacheResponse ( )
return boolean|array

不管是否缓存, 返回一个数组而不是true来存储其它数据.

cacheResponse() public 方法 (可用自版本: 2.0.3)

缓存响应(response)属性.

public void cacheResponse ( )
calculateCacheKey() protected 方法 (可用自版本: 2.0.3)

protected array calculateCacheKey ( )
return array

用于缓存响应(response)属性的键.

getView() public 方法

public void getView ( )
init() public 方法

初始化对象.

在使用给定的配置初始化对象之后, 在构造函数的末尾调用此方法.

public void init ( )
restoreResponse() protected 方法 (可用自版本: 2.0.3)

从给定数据恢复响应(response)属性.

protected void restoreResponse ( $response, $data )
$response yii\web\Response

要恢复的响应(response).

$data array

响应(response)属性数据.