caching-page.md 2.52 KB
Newer Older
dementorpasha committed
1
Кэширование страниц
2
=================
dementorpasha committed
3

4
Кэширование страниц — это кэширование всего содержимого страницы на стороне сервера. Позже, когда эта страница
5
будет снова запрошена, сервер вернет её из кэша вместо того чтобы генерировать её заново.
dementorpasha committed
6

7 8
Кэширование страниц осуществляется при помощи [фильтра действия](structure-filters.md) [[yii\filters\PageCache]] и
может быть использовано в классе контроллера следующим образом:
dementorpasha committed
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

```php
public function behaviors()
{
    return [
        [
            'class' => 'yii\filters\PageCache',
            'only' => ['index'],
            'duration' => 60,
            'variations' => [
                \Yii::$app->language,
            ],
            'dependency' => [
                'class' => 'yii\caching\DbDependency',
                'sql' => 'SELECT COUNT(*) FROM post',
            ],
        ],
    ];
}
```

30
Приведённый код задействует кэширование только для действия `index`. Содержимое страницы кэшируется максимум на 60 секунд
31 32
и варьируется в зависимости от текущего языка приложения. Кэшированная страница должна быть признана просроченной, если
общее количество постов изменилось.
dementorpasha committed
33

34 35 36 37
Кэширование страниц очень похоже на [кэширования фрагментов](caching-fragment.md). В обоих случаях поддерживаются параметры
`duration` (продолжительность), `dependencies` (зависимости), `variations` (вариации), и `enabled` (включен). Главное
отличие заключается в том, что кэширование страницы реализовано в виде [фильтра действия](structure-filters.md),
а кэширование фрагмента в виде [виджета](structure-widgets.md).
dementorpasha committed
38

39 40
Вы можете использовать вместе [кэширование фрагмента](caching-fragment.md),
[динамическое содержимое](caching-fragment.md#dynamic-content) и кэширование страницы.