您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
5-1 页面缓存
发布时间:2023-05-11 14:18:57编辑:雪饮阅读()
-
behaviors
控制器中的behaviors方法是在action前缀方法之前执行的
实例如:
<?php
namespace app\controllers;
use yii\web\Controller;
class HelloController extends Controller{
public function behaviors()
{
echo "我是在action之前先一步执行的";
echo "<hr/>";
return [];
}
public function actionIndex(){
echo "i am ".__FUNCTION__;
}
}
behaviors方法必须返回一个数组(好像是的,如果我没有return就报错)
缓存整个action
了解了behaviors,那么可以利用该机制缓存到action级别。
就是说,比如我访问某个action,第一次是该action各种查询后给响应结果,那么第二次访问该action时候,则是直接从缓存中取出该action之前的响应结果。
同样像片段缓存一样支持有效期和支持用文件内容变动与否来决定缓存的失效与否。
实例如:
<?php namespace app\controllers; use yii\web\Controller; class HelloController extends Controller{ public function behaviors() { return [ [ 'class'=>'yii\filters\PageCache', //据说:支持像昨天的片段缓存一样的设置缓存时间,单位是秒 'duration'=>1000, 'dependency'=>[ 'class'=>'yii\caching\FileDependency', /*支持像昨天的片段缓存一样,可以设置根据某个文件的内容是否变化来取决于缓存是否失效 应该是也要预先创建这个文件吧,像是和之前一样我这里没有创建好像不行(也有可能是写入权限问题,我这里就暂时部纠结了,直接手创) * * */ 'fileName'=>'pageCache.txt' ] ] ]; } public function actionIndex(){ echo "i am ".__FUNCTION__.':adasd1221'; } }页面缓存的only属性的作用
就说上面的页面缓存没有指定缓存的action,那么就是说该控制器下应该就是所有action前缀的方法都将被缓存其响应。
那么假如说我只想缓存几个指定的action呢?用only属性就可以办到,only接收一个数组,数组元素就是action的名称(应该是不含action的小写名称吧,应该就是同步url请求中的action名称吧)
实例如:
<?php namespace app\controllers; use yii\web\Controller; class HelloController extends Controller{ public function behaviors() { return [ [ 'class'=>'yii\filters\PageCache', 'duration'=>1000, /* * only使得支持按action名称来定义仅缓存所定义的这些数组元素对应的action, * 而不是直接缓存整个控制器中的所有action * */ 'only'=>['index','index2'], 'dependency'=>[ 'class'=>'yii\caching\FileDependency', 'fileName'=>'pageCache.txt' ] ] ]; } public function actionIndex(){ echo "i am ".__FUNCTION__.':adasd1221asdasd444'; } public function actionIndex2(){ echo "i am ".__FUNCTION__.':adasd1221asdas44'; } public function actionIndex3(){ echo "i am ".__FUNCTION__.':adasd1221asdas44'; } }
关键字词:页面缓存
上一篇:4-3 片段缓存嵌套
下一篇:6-3 http缓存之缓存时机
相关文章
-
无相关信息