没有命名空间的类 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\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-ModifiedETag 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

属性详情

$cacheControlHeader 公共 属性

Cache-Control HTTP header的值,如果为 null, 则不会发送。

参见 http://tools.ietf.org/html/rfc2616#section-14.9.

public string $cacheControlHeader 'public, max-age=3600'
$enabled 公共 属性

指示是否应启用此筛选器的值。

public boolean $enabled true
$etagSeed 公共 属性

生成 ETag 种子字符串的 PHP 回调。 回调的签名应为:

function ($action, $params)

其中$action 是此筛选器当前正在处理的 yii\base\Action 对象; $params 接受 $params 的值。 回调应该返回 一个字符串作为生成 ETag 的种子。

public callable $etagSeed null
$lastModified 公共 属性

一个 php 回调返回上次修改时间的 UNIX 时间戳。 回调的签名应为:

function ($action, $params)

其中$action 是此筛选器当前正在处理的 yii\base\Action 对象; $params 接受 $params 的值。回调应该返回UNIX时间戳。

参见 http://tools.ietf.org/html/rfc7232#section-2.2.

public callable $lastModified null
$params 公共 属性

应传递给 $lastModified$etagSeed 回调的其他参数。

public mixed $params null
$sessionCacheLimiter 公共 属性

调用 session_cache_limiter() 时要设置的缓存限制器的名称。 默认值为空字符串,这意味着完全关闭缓存标头的自动发送。 您可以将此属性设置为 public, private, private_no_expire,和 nocache。 请参阅 session_cache_limiter() 有关这些值的详细说明.

如果此属性为 null,则不会调用session_cache_limiter() 。结果, PHP 将根据‘session.cache_limiter` PHP ini 设置发送headers 。

$weakEtag 公共 属性 (自版本 2.0.8 可用)

是否生成弱 ETags。

如果内容在语义上是等价的而不是字节相等,则应使用弱 ETags 。

参见 http://tools.ietf.org/html/rfc7232#section-2.3.

public boolean $weakEtag false

方法详情

beforeAction() 公共 方法

此方法是在执行操作之前(在所有可能的筛选器之后)调用的。 您可以重写此方法来为操作做最后一刻的准备。

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

要执行的操作。

return boolean

是否应继续执行该操作。

generateEtag() 受保护 方法

从给定的种子字符串生成 ETag。

protected string generateEtag($seed)
$seed string

Seed for the ETag

return string

The generated ETag

sendCacheControlHeader() 受保护 方法

将缓存控制标头发送到客户端。

参见 $cacheControlHeader.

protected void sendCacheControlHeader()
validateCache() 受保护 方法

验证 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 缓存是否仍然有效。