概述
这里只是简单讲一下用法,如果想更详细的了解,去看 官方手册 比较好。
除了使用服务器端缓存外, Web 应用还可以利用客户端 缓存去节省相同页面内容的生成和传输时间。通过配置 yii\filters\HttpCache 过滤器,控制器操作渲染的内容就能 缓存在客户端。
示例说明
class TestController extends Controller{
// 该方法会在其他方法之前执行
public function behaviors()
{
// 声明缓存配置
return [ // 需要注意的这里是二维数组
[
'class' => 'yii\filters\HttpCache', // 设置需要加载的缓存文件
'only' => ['index'], // 设置需要缓存的控制器
'lastModified' => function(){ // 设置 Last-Modified 头
return 1548922;
},
'etagSeed' => function (){ // 设置 ETag 头
return 'hello';
}
]
];
}
public function actionIndex(){
return $this->renderPartial('index');
}
public function actionTest(){
echo 789;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
参数说明
class:定义需要加载的缓存配置文件。
only:定义仅仅只需要在哪个页面设置缓存。如上列举例中,仅仅只有index页面会缓存下来,其他页面则不会缓存。
lastModified:使用时间戳标明页面自上次客户端缓存后是否被修改过。
etagSeed:通过对比客户端的哈希值和服务器端生成的哈 希值,浏览器就能判断页面是否被修改过,进而决定是否应该重新传输内容。
注意
当 lastModified 和 etagSeed 同时被设置时,lastModified 的设置可以说无效,因为会始终按照 etagSeed 的改变而改变。