mirror of
				https://github.com/yiisoft/yii2.git
				synced 2025-10-31 18:47:33 +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.
 | |
| 
 | 
