6.缓存

这里写图片描述
这里写图片描述

1.数据缓存
缓存依赖:

public function actionTest5()
    {
        //获取缓存组件
        $cache = \Yii::$app->cache;
        // 往缓存中写数据
        //$cache->add('key1','hello,world');
        //读缓存
        //echo $cache->get('key1');
        //修改缓存
        /*$cache->set('key1','edit1');
        echo $cache->get('key1');*/
        //删除数据
       /* $cache->delete('key1');
        $data = $cache->get('key');
        var_dump($data);*/
        //清空所有
        //$cache->flush();
        /*$cache->add('key1','hello,world'); //只会输出这个
        $cache->add('key1','hello,world22');
        echo $cache->get('key1');*/

        //有效期设置
        //$cache->add('key', 'aaa', 15);
//        echo $cache->get('key');

        //文件依赖,$dependency 所对应的文件被修改,cache失效
        /*$dependency = new \yii\caching\FileDependency(['fileName' => 'hw3.txt']);
        $cache->add('file_key1', 'abc', 3000, $dependency);
        var_dump($cache->get('file_key1'));*/

        //表达式依赖
        //http://yii.local/web/index.php?r=hello/test5&name=123456 , name 值改变,缓存失效
       /* $dependency = new \yii\caching\ExpressionDependency(
            ['expression' => '\Yii::$app->request->get("name")']
        );
        $cache->add('expression_key', 'aaaa', 3000, $dependency);
        var_dump($cache->get('expression_key'));*/

        // DB 依赖 , count 改变,cache 失效
        $dependency = new \yii\caching\DbDependency(
            ['sql' => 'select count(*) from test']
        );
        //$cache->add('db_key', 'bbb', 3000, $dependency);
        var_dump($cache->get('db_key'));
    }

2.片段缓存:
这里写图片描述

<?php
    $duration = 20;
//缓存依赖
$dependency = [
    'class' => '\yii\caching\FileDependency',
    'fileName' => 'hw1.txt'
];

//缓存开关
$enable = true;

//    if ($this->beginCache('cache_div')) {
    if ($this->beginCache('cache_div', ['duration' => $duration])) {
//    if ($this->beginCache('cache_div', ['dependency' => $dependency])) {
//    if ($this->beginCache('cache_div', ['enabled' => $enable])) {


?>


<div id="cache_div">
    <div>
        这里是外层被缓存---aaawe

        <?php
            if ($this->beginCache('cache_inner_div', ['duration' => 2])) {
        ?>
                <div id="cache_outer_div">
                    这里是内层,缓存---
                    注意: 以外层缓存时间为准。也就是说外层缓存时间大于内层,即使内层变化,缓存也不会失效
                </div>
        <?php
                $this->endCache(); }
        ?>
    </div>
</div>

<?php $this->endCache(); } ?>

<br/>
<div id="no_cache_div">
    <div>
        这里不会被缓存——啊啊啊啊啊
    </div>
</div>

3.页面缓存

public function actionTest6()
    {
        echo '2';
        echo '22aaa'; //PageCache 后,改为22,没反应
        //return $this->renderPartial('index');
    }


    //先于控制器中其他方法执行
    public function behaviors()
    {
        echo '1','<br/>';
        return [
            [
                'class' => '\yii\filters\PageCache',
                'duration' => 1000,//缓存时间
                'only' => ['test6'], //只针对 actionTest6
                'dependency' => [
                    'class' => '\yii\caching\FileDependency',
                    'fileName' => 'hw.txt'
                ]
            ]
        ];
    }

    public function actionTest7()
    {
        echo 'test7123234';
    }

4. HTTP 缓存

//先于控制器中其他方法执行
    public function behaviors()
    {
        return [
            [
                'class' => '\yii\filters\HttpCache',
                'lastModified' => function(){
                    //如果文件修改,mtime 会变化,缓存失效
                    return filemtime('hw.txt');
                    //return 1422817567;
                },
                'etagSeed' => function(){
                    //标题改变的话,缓存失效
                    $fp = fopen('hw.txt','r');
                    $title = fgets($fp);
                    fclose($fp);
                    return $title;
                    //return 'etagsseed2wer';
                }
            ]
        ];
        /*return [
            [
                'class' => '\yii\filters\PageCache',
                'duration' => 1000,//缓存时间
                'only' => ['test6'], //只针对 actionTest6
                'dependency' => [
                    'class' => '\yii\caching\FileDependency',
                    'fileName' => 'hw.txt'
                ]
            ]
        ];*/
    }

    public function actionTest7()
    {
        $content = file_get_contents('hw.txt');
        return $this->renderPartial('index1', ['new' => $content]);
    }

http://www.yiichina.com/doc/guide/2.0/start-installation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值