yii2.0框架中使用页面缓存

yii2.0规范文档:https://www.yiichina.com/doc/guide/2.0/caching-page

PageCache类官方文档:https://www.yiichina.com/doc/api/2.0/yii-filters-pagecache

 

本人示例代码:

public function behaviors(){
    return [
        // 页面缓存示例
        [
            'class' => 'yii\filters\PageCache',
            'only' => ['index'],
            'duration' => 86400,// 一天 0 永不过期
            'variations' => [
                $this->area_id,
            ],
            'dependency' => [
                'class' => 'yii\caching\ExpressionDependency',
                'expression'   => '\Yii::$app->FileCache->get("cache")'
            ],
            'cache' => 'view_cache',
            'enabled' => false
        ]
    ];
}

 

class: 页面缓存类

only: 需要执行页面缓存的方法

duration: 缓存时间(秒级),0为永不过期

variations: 根据什么条件来进行变化页面,例如示例中的地区,每个地区显示不一样的东西。yii示例中给的是系统语言\Yii:$app->language。

cache: 使用什么缓存机制来存储页面缓存数据,本人用的是filecache。

enabled: 缓存开关,可以使用!YII_DEBUG或者\Yii::$app->request->isGet等

dependency: 刷新缓存机制,依赖机制有很多种

1.db-sql执行结果:

$dependency = [
    'class' => 'yii\caching\DbDependency',
    'sql' => 'SELECT MAX(updated_at) FROM post',
];

2.表达式执行结果:

特别注意是php表达式,执行一次后,变量$expression会一直保存。ExpressionDependency类中使用eval()来执行。

本人刷新缓存方法是根据cache结果是否发生变化。

$dependency => [
    'class' => 'yii\caching\ExpressionDependency',
    'expression'   => '\Yii::$app->FileCache->get("cache")'
],

 3.文件的最后修改时间:

$dependency => [
    'class' => 'yii\caching\FileDependency',
    'expression'   => 'filename'
],

其他种类暂未研究...

posted on 2019-06-25 18:57  年华消逝青春  阅读(809)  评论(0编辑  收藏  举报

导航