前面学习了几种YII框架里面的缓存,今天继续新的学习。当用户在较短时间内多次通过浏览器向服务器发送数据请求时(比如抢票,抢购),如果服务器每次都完整回复的话,势必影响服务器的性能。为了应对这种情况,YII框架提供了http缓存的解决方案。大致过程就是,服务器向浏览器发送数据时,附上该数据的特征码(etag)或者时间(lastModified),在浏览器下次向服务器发送改请求时,附上这段信息。如果检测到上次发送的数据并没有变化的话,就让浏览器读取上次请求的缓存数据就可以了。
看看例子
class HelloController extends Controller{
public function behaviors(){
return [
[
'class' => 'yii\filters\HttpCache',
'lastModified' => function(){
return filemtime('hw.txt');//取文件修改时间
//return 1432817568;//时间戳
},
'etagSeed'=>function(){
$fp = fopen('hw.txt','r');
$title = fgets($fp);
fclose('hw.txt');
return $title;//取第一行为特征
//return 'asq1a';
}
]
];
}
public function actionAbout(){
$content = file_get_contents('hw.txt');
return $this->renderPartial('about',['new'=>$content]);
}
}
感觉比较简单,不对代码详述了,感觉取第一行为特征码不好,回头找找好方法