Page caching refers to caching the content of a whole page on the server-side. Later when the same page is requested again, its content will be served from the cache instead of regenerating it from scratch.
Page caching is supported by [[yii\filters\PageCache]], an action filter. It can be used like the following in a controller class:
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',
],
],
];
}
The above code states that page caching should be used only for the index
action. The page content should
be cached for at most 60 seconds and should be variated by the current application language
and the cached page should be invalidated if the total number of posts is changed.
As you can see, page caching is very similar to fragment caching. They both support options such
as duration
, dependencies
, variations
, and enabled
. Their main difference is that page caching is
implemented as an action filter while fragment caching a widget.
You can use fragment caching as well as dynamic content together with page caching.