mirror of
				https://github.com/yiisoft/yii2.git
				synced 2025-11-04 14:46:19 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
Page Caching
 | 
						|
============
 | 
						|
 | 
						|
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](structure-filters.md).
 | 
						|
It can be used like the following in a controller class:
 | 
						|
 | 
						|
```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',
 | 
						|
            ],
 | 
						|
        ],
 | 
						|
    ];
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
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](caching-fragment.md). They both support options such
 | 
						|
as `duration`, `dependencies`, `variations`, and `enabled`. Their main difference is that page caching is
 | 
						|
implemented as an [action filter](structure-filters.md) while fragment caching a [widget](structure-widgets.md).
 | 
						|
 | 
						|
You can use [fragment caching](caching-fragment.md) as well as [dynamic content](caching-fragment.md#dynamic-content)
 | 
						|
together with page caching.
 | 
						|
 |