Класс yii\filters\HttpCache
| Наследование | yii\filters\HttpCache » yii\base\ActionFilter » yii\base\Behavior » yii\base\Object |
|---|---|
| Реализует | yii\base\Configurable |
| Доступна с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/filters/HttpCache.php |
HttpCache реализует кеширование на стороне клиента, используя заголовки Last-Modified и ETag HTTP.
Это фильтр действия, который можно добавить в контроллер и обрабатывает событие beforeAction.
Чтобы использовать HttpCache, объявите его в методе behaviors() вашего класса контроллера. В следующем примере фильтр будет применен к действию list, а заголовок Last-Modified будет содержать дату последнего обновления таблицы пользователей в базе данных.
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. | yii\filters\HttpCache |
| $enabled | boolean | Значение, указывающее, должен ли быть включён этот фильтр. | yii\filters\HttpCache |
| $etagSeed | callable | PHP-обработчик, генерирующий строку ETag. | yii\filters\HttpCache |
| $except | array | Список идентификаторов действий, к которым этот фильтр не должен применяться. | yii\base\ActionFilter |
| $lastModified | callable | PHP-обработчик, возвращающий временную метку Unix последнего изменения. | yii\filters\HttpCache |
| $only | array | Список идентификаторов действий, к которым этот фильтр должен применяться. | yii\base\ActionFilter |
| $owner | yii\base\Component|null | Владелец этого поведения | yii\base\Behavior |
| $params | mixed | Дополнительные параметры, которые должны быть переданы обработчикам $lastModified и $etagSeed. | yii\filters\HttpCache |
| $sessionCacheLimiter | string | Имя ограничителя кеша сессии для установки при [session_cache_limiter()](http://www. | yii\filters\HttpCache |
| $weakEtag | boolean | Создавать ли слабые ETag. | yii\filters\HttpCache |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает метод с заданным именем, который не является методом класса. | yii\base\Object |
| __construct() | Конструктор. | yii\base\Object |
| __get() | Возвращает значение свойства объекта. | yii\base\Object |
| __isset() | Проверяет, установлено ли свойство, т.е. определено и не равно null. | yii\base\Object |
| __set() | Устанавливает значение свойства объекта. | yii\base\Object |
| __unset() | Устанавливает свойство объекта в null. | yii\base\Object |
| afterAction() | Этот метод вызывается сразу после выполнения действия. | yii\base\ActionFilter |
| afterFilter() | yii\base\ActionFilter | |
| attach() | Присоединяет объект поведения к компоненту. | yii\base\Behavior |
| beforeAction() | Этот метод вызывается непосредственно перед выполнением действия (после всех возможных фильтров). Вы можете переопределить этот метод, чтобы выполнить подготовку к действию в последний момент. | yii\filters\HttpCache |
| beforeFilter() | yii\base\ActionFilter | |
| canGetProperty() | Возвращает значение, указывающее, можно ли считать свойство. | yii\base\Object |
| canSetProperty() | Возвращает значение, указывающее, можно ли установить свойство. | yii\base\Object |
| className() | Возвращает полное квалифицированное имя этого класса. | yii\base\Object |
| detach() | Отсоединяет объект поведения от компонента. | yii\base\Behavior |
| events() | Объявляет обработчики событий для событий $owner. | yii\base\Behavior |
| hasMethod() | Возвращает значение, указывающее, определён ли метод. | yii\base\Object |
| hasProperty() | Возвращает значение, указывающее, определено ли свойство. | yii\base\Object |
| init() | Инициализирует объект. | yii\base\Object |
Защищённые методы
| Метод | Описание | Определено в |
|---|---|---|
| generateEtag() | Генерирует ETag из заданной строки. | yii\filters\HttpCache |
| getActionId() | Возвращает идентификатор действия, преобразуя yii\base\Action::$uniqueId в идентификатор, относящийся к модулю. | yii\base\ActionFilter |
| isActive() | Возвращает значение, указывающее, активен ли фильтр для данного действия. | yii\base\ActionFilter |
| sendCacheControlHeader() | Отправляет заголовок кеширования в клиент. | yii\filters\HttpCache |
| validateCache() | Проверяет, содержит ли HTTP-кеш допустимое содержимое. | yii\filters\HttpCache |
Подробное описание свойств
$cacheControlHeader публичное свойство
Значение заголовка Cache-Control HTTP. Если null, заголовок не будет отправлен.
См. также http://tools.ietf.org/html/rfc2616#section-14.9.
public string $cacheControlHeader = 'public, max-age=3600'
$enabled публичное свойство
Значение, указывающее, должен ли быть включён этот фильтр.
public boolean $enabled = true
$etagSeed публичное свойство
PHP-обработчик, генерирующий строку ETag. Подпись обратного вызова должна быть:
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.
public string $sessionCacheLimiter = ''
$weakEtag общее свойство (доступно с версии 2.0.8)
Нужно ли генерировать слабые ETag.
Слабые ETag следует использовать, если содержимое должно считаться семантически эквивалентным, но не байтово-равным.
См. также 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 |
Семя для ETag |
| return | string |
Сгенерированный ETag |
sendCacheControlHeader() защищенный метод
Отправляет заголовок управления кэшем клиенту
См. также $cacheControlHeader.
| protected void sendCacheControlHeader ( ) |
|---|
validateCache() защищенный метод
Проверяет, содержит ли кэш HTTP действительное содержимое.
Если и Last-Modified, и ETag равны null, возвращается false.
| protected boolean validateCache ( $lastModified, $etag ) | ||
|---|---|---|
| $lastModified | integer |
Вычисленное значение Last-Modified в формате временной метки Unix. Если null, заголовок Last-Modified не будет проверен. |
| $etag | string |
Вычисленное значение ETag. Если null, заголовок ETag не будет проверен. |
| return | boolean |
Действителен ли кэш HTTP. |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-filters-httpcache.html