Class yii\filters\PageCache
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 。 创建 PageCache 对象后,如果要更改此属性, 您应该只用缓存对象来分配它。 从版本 2. | yii\filters\PageCache |
$cacheCookies | boolean|array | 指示是否缓存所有 cookies 或数组的布尔值 cookies 名称 该名称指示可缓存哪些 cookies。要非常小心地缓存 cookies,因为它 可能泄漏存储在 cookies 中的敏感或私有数据给不需要的用户。 | yii\filters\PageCache |
$cacheHeaders | boolean|array | 指示是否缓存所有 HTTP headers 的布尔值,或者一个 HTTP header 名称(大小写不敏感)数组指示可以缓存哪些 HTTP headers 注意:如果您的 HTTP headers 包含敏感信息,你应该列出白名单哪些 headers 可以缓存。 | yii\filters\PageCache |
$dependency | array|yii\caching\Dependency | 缓存内容所依赖的依赖项。
这可以是一个 yii\caching\Dependency 对象也可以是用于创建依赖项对象的配置数组。
例如,
` php
[
'class' => 'yii\caching\DbDependency',
'sql' => 'SELECT MAX(updated_at) FROM post',
]
`
将使输出缓存取决于所有 POST 的上次修改时间。
如果任何帖子的修改时间发生更改,则缓存的内容将无效。
如果启用 $cacheCookies 或者 $cacheHeaders,然后应该启用 yii\caching\Dependency::$reusable 节省性能。
这是因为 cookies 和 headers 当前是与实际页面内容分开存储的,从而导致对依赖项进行两次计算。 |
yii\filters\PageCache |
$duration | integer | 数据在缓存中保持有效的秒数。
使用 0 指示缓存的数据永远不会过期。 |
yii\filters\PageCache |
$dynamicPlaceholders | array | A list of placeholders. | yii\base\DynamicContentAwareTrait |
$enabled | boolean | 是否启用页面缓存。 您可以使用此属性根据 特定设置打开和关闭页缓存(例如仅对 GET 请求启用页缓存)。 | yii\filters\PageCache |
$except | array | List of action IDs that this filter should not apply to. | yii\base\ActionFilter |
$only | array | List of action IDs that this filter should apply to. | yii\base\ActionFilter |
$owner | yii\base\Component|null | The owner of this behavior | yii\base\Behavior |
$variations | string[]|string | 将导致缓存内容更改的因素列表。
每个因素都是表示变体的字符串(例如语言,一个 GET 参数)。
以下更改设置将根据
当前应用程序语言将内容缓存到不同版本中:
` php
[
Yii::$app->language,
]
` |
yii\filters\PageCache |
$varyByRoute | boolean | 是否应根据路由区分要缓存的内容。
路由请求的控制器 ID 和操作 ID 组成。默认值为true 。 |
yii\filters\PageCache |
$view | yii\base\View | 用于缓存的视图组件。如果未设置,默认应用程序 yii\web\Application::$view 视图组件。 | yii\filters\PageCache |
公共方法
方法 | 描述 | 被定义在 |
---|---|---|
__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 |
addDynamicPlaceholder() | Adds a placeholder for dynamic content. | yii\base\DynamicContentAwareTrait |
afterAction() | 执行动作后立即调用此方法。 您可以覆盖此方法以对操作执行一些后处理。 | yii\base\ActionFilter |
afterFilter() | yii\base\ActionFilter | |
afterRestoreResponse() | 此方法是在响应恢复完成后(但在响应发送之前)调用的。 您可以重写此方法以便在发送响应之前进行最后一刻的准备。 | yii\filters\PageCache |
attach() | Attaches the behavior object to the component. | yii\base\Behavior |
beforeAction() | 在执行操作之前调用此方法(在所有可能的筛选器之后)。 您可以重写此方法来完成该操作的最后一刻做准备。 | yii\filters\PageCache |
beforeCacheResponse() | 在启动响应缓存之前调用此方法。
您可以通过返回 false 来重写此方法以取消缓存也可以通过返回数组而
不是 true 来将其他数据存储在缓存条目中。 |
yii\filters\PageCache |
beforeFilter() | yii\base\ActionFilter | |
cacheResponse() | 缓存响应属性。 | yii\filters\PageCache |
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 |
getDynamicPlaceholders() | Returns a list of placeholders for dynamic content. This method is used internally to implement the content caching feature. | yii\base\DynamicContentAwareTrait |
getView() | yii\filters\PageCache | |
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\filters\PageCache |
setDynamicPlaceholders() | Sets a list of placeholders for dynamic content. This method is used internally to implement the content caching feature. | yii\base\DynamicContentAwareTrait |
受保护的方法
方法 | 描述 | 被定义在 |
---|---|---|
calculateCacheKey() | yii\filters\PageCache | |
getActionId() | 通过将 yii\base\Action::$uniqueId 转换为相对于模块的 ID 来返回动作 ID。 | yii\base\ActionFilter |
isActive() | 返回一个值,该值指示过滤器对于给定操作是否处于活动状态。 | yii\base\ActionFilter |
restoreResponse() | 从给定数据恢复响应属性。 | yii\filters\PageCache |
updateDynamicContent() | Replaces placeholders in $content with results of evaluated dynamic statements. | yii\base\DynamicContentAwareTrait |
属性详情
缓存对象或缓存对象的应用程序组件 ID 。 创建 PageCache 对象后,如果要更改此属性, 您应该只用缓存对象来分配它。 从版本 2.0.2 开始,这也可以是用于创建对象的配置数组。
指示是否缓存所有 cookies 或数组的布尔值 cookies 名称 该名称指示可缓存哪些 cookies。要非常小心地缓存 cookies,因为它 可能泄漏存储在 cookies 中的敏感或私有数据给不需要的用户。
指示是否缓存所有 HTTP headers 的布尔值,或者一个 HTTP header 名称(大小写不敏感)数组指示可以缓存哪些 HTTP headers 注意:如果您的 HTTP headers 包含敏感信息,你应该列出白名单哪些 headers 可以缓存。
缓存内容所依赖的依赖项。 这可以是一个 yii\caching\Dependency 对象也可以是用于创建依赖项对象的配置数组。 例如,
[
'class' => 'yii\caching\DbDependency',
'sql' => 'SELECT MAX(updated_at) FROM post',
]
将使输出缓存取决于所有 POST 的上次修改时间。 如果任何帖子的修改时间发生更改,则缓存的内容将无效。
如果启用 $cacheCookies 或者 $cacheHeaders,然后应该启用 yii\caching\Dependency::$reusable 节省性能。 这是因为 cookies 和 headers 当前是与实际页面内容分开存储的,从而导致对依赖项进行两次计算。
数据在缓存中保持有效的秒数。
使用 0
指示缓存的数据永远不会过期。
是否启用页面缓存。 您可以使用此属性根据 特定设置打开和关闭页缓存(例如仅对 GET 请求启用页缓存)。
将导致缓存内容更改的因素列表。 每个因素都是表示变体的字符串(例如语言,一个 GET 参数)。 以下更改设置将根据 当前应用程序语言将内容缓存到不同版本中:
[
Yii::$app->language,
]
是否应根据路由区分要缓存的内容。
路由请求的控制器 ID 和操作 ID 组成。默认值为true
。
用于缓存的视图组件。如果未设置,默认应用程序 yii\web\Application::$view 视图组件。
方法详情
此方法是在响应恢复完成后(但在响应发送之前)调用的。 您可以重写此方法以便在发送响应之前进行最后一刻的准备。
public void afterRestoreResponse($data) | ||
$data | array|null | 存储在缓存条目或 |
在执行操作之前调用此方法(在所有可能的筛选器之后)。 您可以重写此方法来完成该操作的最后一刻做准备。
public boolean beforeAction($action) | ||
$action | yii\base\Action | 要执行的行动。 |
return | boolean | 是否应继续执行这项行动。 |
---|
在启动响应缓存之前调用此方法。
您可以通过返回 false
来重写此方法以取消缓存也可以通过返回数组而
不是 true
来将其他数据存储在缓存条目中。
public boolean|array beforeCacheResponse() | ||
return | boolean|array | 无论是否缓存,返回一个数组而不是 |
---|
缓存响应属性。
public void cacheResponse() |
protected \yii\filters\数组用于缓存响应属性的键。 calculateCacheKey() |
public void getView() |
Initializes the object.
This method is invoked at the end of the constructor after the object is initialized with the given configuration.
public void init() |
从给定数据恢复响应属性。
protected void restoreResponse($response, $data) | ||
$response | yii\web\Response | 需要恢复的响应。 |
$data | array | 响应属性数据。 |