Class yii\filters\HttpCache
继承 | yii\filters\HttpCache » yii\base\ActionFilter » yii\base\Behavior » yii\base\BaseObject |
---|---|
实现 | yii\base\Configurable |
可用版本自 | 2.0 |
源码 | https://github.com/yiichina/yii2/blob/api/framework/filters/HttpCache.php |
HttpCache 通过利用 Last-Modified
和 ETag
HTTP headers 来实现客户端缓存。
它是一个动作过滤器可以添加到控制器中并处理 beforeAction
事件。
要使用 HttpCache,请在控制器类的 behaviors()
方法中声明它。
在下面的示例中过滤器将应用于 index
操作
最后修改的标题将包含数据库中用户表的最后更新日期。
public function behaviors()
{
return [
[
'class' => 'yii\filters\HttpCache',
'only' => ['index'],
'lastModified' => function ($action, $params) {
$q = new \yii\db\Query();
return $q->from('user')->max('updated_at');
},
// 'etagSeed' => function ($action, $params) {
// return // generate ETag seed here
// }
],
];
}
公共属性
属性 | 类型 | 描述 | 被定义在 |
---|---|---|---|
$cacheControlHeader | string | Cache-Control HTTP header的值,如果为 null, 则不会发送。 |
yii\filters\HttpCache |
$enabled | boolean | 指示是否应启用此筛选器的值。 | yii\filters\HttpCache |
$etagSeed | callable | 生成 ETag 种子字符串的 PHP 回调。
回调的签名应为:
` php
function ($action, $params)
`
其中$action 是此筛选器当前正在处理的 yii\base\Action 对象;
$params 接受 $params 的值。 回调应该返回
一个字符串作为生成 ETag 的种子。 |
yii\filters\HttpCache |
$except | array | List of action IDs that this filter should not apply to. | yii\base\ActionFilter |
$lastModified | callable | 一个 php 回调返回上次修改时间的 UNIX 时间戳。
回调的签名应为:
` php
function ($action, $params)
`
其中$action 是此筛选器当前正在处理的 yii\base\Action 对象;
$params 接受 $params 的值。回调应该返回UNIX时间戳。 |
yii\filters\HttpCache |
$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 |
$params | mixed | 应传递给 $lastModified 和 $etagSeed 回调的其他参数。 | yii\filters\HttpCache |
$sessionCacheLimiter | string | 调用 [session_cache_limiter()](http://www. | yii\filters\HttpCache |
$weakEtag | boolean | 是否生成弱 ETags。 如果内容在语义上是等价的而不是字节相等,则应使用弱 ETags 。 | yii\filters\HttpCache |
公共方法
方法 | 描述 | 被定义在 |
---|---|---|
__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 |
afterAction() | 执行动作后立即调用此方法。 您可以覆盖此方法以对操作执行一些后处理。 | yii\base\ActionFilter |
afterFilter() | yii\base\ActionFilter | |
attach() | Attaches the behavior object to the component. | yii\base\Behavior |
beforeAction() | 此方法是在执行操作之前(在所有可能的筛选器之后)调用的。 您可以重写此方法来为操作做最后一刻的准备。 | yii\filters\HttpCache |
beforeFilter() | yii\base\ActionFilter | |
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 |
受保护的方法
方法 | 描述 | 被定义在 |
---|---|---|
generateEtag() | 从给定的种子字符串生成 ETag。 | yii\filters\HttpCache |
getActionId() | 通过将 yii\base\Action::$uniqueId 转换为相对于模块的 ID 来返回动作 ID。 | yii\base\ActionFilter |
isActive() | 返回一个值,该值指示过滤器对于给定操作是否处于活动状态。 | yii\base\ActionFilter |
sendCacheControlHeader() | 将缓存控制标头发送到客户端。 | yii\filters\HttpCache |
validateCache() | 验证 HTTP 缓存是否包含有效内容。 如果 Last-Modified 和 ETag 均为 null,则返回False。 | yii\filters\HttpCache |
属性详情
Cache-Control
HTTP header的值,如果为 null, 则不会发送。
指示是否应启用此筛选器的值。
生成 ETag 种子字符串的 PHP 回调。 回调的签名应为:
function ($action, $params)
其中$action
是此筛选器当前正在处理的 yii\base\Action 对象;
$params
接受 $params 的值。 回调应该返回
一个字符串作为生成 ETag 的种子。
一个 php 回调返回上次修改时间的 UNIX 时间戳。 回调的签名应为:
function ($action, $params)
其中$action
是此筛选器当前正在处理的 yii\base\Action 对象;
$params
接受 $params 的值。回调应该返回UNIX时间戳。
应传递给 $lastModified 和 $etagSeed 回调的其他参数。
调用 session_cache_limiter()
时要设置的缓存限制器的名称。 默认值为空字符串,这意味着完全关闭缓存标头的自动发送。
您可以将此属性设置为 public
, private
, private_no_expire
,和 nocache
。
请参阅 session_cache_limiter()
有关这些值的详细说明.
如果此属性为 null
,则不会调用session_cache_limiter()
。结果,
PHP 将根据‘session.cache_limiter` PHP ini 设置发送headers 。
方法详情
此方法是在执行操作之前(在所有可能的筛选器之后)调用的。 您可以重写此方法来为操作做最后一刻的准备。
public boolean beforeAction($action) | ||
$action | yii\base\Action | 要执行的操作。 |
return | boolean | 是否应继续执行该操作。 |
---|
从给定的种子字符串生成 ETag。
protected string generateEtag($seed) | ||
$seed | string | Seed for the ETag |
return | string | The generated ETag |
---|
将缓存控制标头发送到客户端。
protected void sendCacheControlHeader() |
验证 HTTP 缓存是否包含有效内容。 如果 Last-Modified 和 ETag 均为 null,则返回False。
protected boolean validateCache($lastModified, $etag) | ||
$lastModified | integer | 根据 UNIX 时间戳计算 Last-Modified 值。 如果为 null,则不会验证 Last-Modified header。 |
$etag | string | 计算的 ETag 值。如果为 null,则不会验证 ETag header。 |
return | boolean | HTTP 缓存是否仍然有效。 |
---|