W3cubDocs

/Yii 2.0

Class yii\filters\HttpCache

Inheritance yii\filters\HttpCache » yii\base\ActionFilter » yii\base\Behavior » yii\base\Object
Implements yii\base\Configurable
Available since version 2.0
Source Code https://github.com/yiisoft/yii2/blob/master/framework/filters/HttpCache.php

HttpCache implements client-side caching by utilizing the Last-Modified and ETag HTTP headers.

It is an action filter that can be added to a controller and handles the beforeAction event.

To use HttpCache, declare it in the behaviors() method of your controller class. In the following example the filter will be applied to the list-action and the Last-Modified header will contain the date of the last update to the user table in the database.

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
//            }
        ],
    ];
}

Public Properties

Property Type Description Defined By
$cacheControlHeader string The value of the Cache-Control HTTP header. yii\filters\HttpCache
$enabled boolean A value indicating whether this filter should be enabled. yii\filters\HttpCache
$etagSeed callable A PHP callback that generates the ETag seed string. yii\filters\HttpCache
$except array List of action IDs that this filter should not apply to. yii\base\ActionFilter
$lastModified callable A PHP callback that returns the UNIX timestamp of the last modification time. 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 Additional parameters that should be passed to the $lastModified and $etagSeed callbacks. yii\filters\HttpCache
$sessionCacheLimiter string The name of the cache limiter to be set when [session_cache_limiter()](http://www. yii\filters\HttpCache
$weakEtag boolean Whether to generate weak ETags. yii\filters\HttpCache

Public Methods

Method Description Defined By
__call() Calls the named method which is not a class method. yii\base\Object
__construct() Constructor. yii\base\Object
__get() Returns the value of an object property. yii\base\Object
__isset() Checks if a property is set, i.e. defined and not null. yii\base\Object
__set() Sets value of an object property. yii\base\Object
__unset() Sets an object property to null. yii\base\Object
afterAction() This method is invoked right after an action is executed. yii\base\ActionFilter
afterFilter() yii\base\ActionFilter
attach() Attaches the behavior object to the component. yii\base\Behavior
beforeAction() This method is invoked right before an action is to be executed (after all possible filters.) You may override this method to do last-minute preparation for the action. yii\filters\HttpCache
beforeFilter() yii\base\ActionFilter
canGetProperty() Returns a value indicating whether a property can be read. yii\base\Object
canSetProperty() Returns a value indicating whether a property can be set. yii\base\Object
className() Returns the fully qualified name of this class. yii\base\Object
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\Object
hasProperty() Returns a value indicating whether a property is defined. yii\base\Object
init() Initializes the object. yii\base\Object

Protected Methods

Method Description Defined By
generateEtag() Generates an ETag from the given seed string. yii\filters\HttpCache
getActionId() Returns an action ID by converting yii\base\Action::$uniqueId into an ID relative to the module yii\base\ActionFilter
isActive() Returns a value indicating whether the filter is active for the given action. yii\base\ActionFilter
sendCacheControlHeader() Sends the cache control header to the client yii\filters\HttpCache
validateCache() Validates if the HTTP cache contains valid content. yii\filters\HttpCache

Property Details

$cacheControlHeader public property

The value of the Cache-Control HTTP header. If null, the header will not be sent.

See also http://tools.ietf.org/html/rfc2616#section-14.9.

public string $cacheControlHeader = 'public, max-age=3600'

$enabled public property

A value indicating whether this filter should be enabled.

public boolean $enabled = true

$etagSeed public property

A PHP callback that generates the ETag seed string. The callback's signature should be:

function ($action, $params)

where $action is the yii\base\Action object that this filter is currently handling; $params takes the value of $params. The callback should return a string serving as the seed for generating an ETag.

public callable $etagSeed = null

$lastModified public property

A PHP callback that returns the UNIX timestamp of the last modification time. The callback's signature should be:

function ($action, $params)

where $action is the yii\base\Action object that this filter is currently handling; $params takes the value of $params. The callback should return a UNIX timestamp.

See also http://tools.ietf.org/html/rfc7232#section-2.2.

public callable $lastModified = null

$params public property

Additional parameters that should be passed to the $lastModified and $etagSeed callbacks.

public mixed $params = null

$sessionCacheLimiter public property

The name of the cache limiter to be set when session_cache_limiter() is called. The default value is an empty string, meaning turning off automatic sending of cache headers entirely. You may set this property to be public, private, private_no_expire, and nocache. Please refer to session_cache_limiter() for detailed explanation of these values.

If this property is null, then session_cache_limiter() will not be called. As a result, PHP will send headers according to the session.cache_limiter PHP ini setting.

public string $sessionCacheLimiter = ''

$weakEtag public property (available since version 2.0.8)

Whether to generate weak ETags.

Weak ETags should be used if the content should be considered semantically equivalent, but not byte-equal.

See also http://tools.ietf.org/html/rfc7232#section-2.3.

public boolean $weakEtag = false

Method Details

beforeAction() public method

This method is invoked right before an action is to be executed (after all possible filters.) You may override this method to do last-minute preparation for the action.

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

The action to be executed.

return boolean

Whether the action should continue to be executed.

generateEtag() protected method

Generates an ETag from the given seed string.

protected string generateEtag ( $seed )
$seed string

Seed for the ETag

return string

The generated ETag

sendCacheControlHeader() protected method

Sends the cache control header to the client

See also $cacheControlHeader.

protected void sendCacheControlHeader ( )

validateCache() protected method

Validates if the HTTP cache contains valid content.

If both Last-Modified and ETag are null, returns false.

protected boolean validateCache ( $lastModified, $etag )
$lastModified integer

The calculated Last-Modified value in terms of a UNIX timestamp. If null, the Last-Modified header will not be validated.

$etag string

The calculated ETag value. If null, the ETag header will not be validated.

return boolean

Whether the HTTP cache is still valid.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-filters-httpcache.html