站点控制器/页面的 Yii 缓存 [英] Yii Caching for site controller/pages

查看:26
本文介绍了站点控制器/页面的 Yii 缓存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试缓存使用 SiteController 的每个页面.在 documentation 中,它说要添加 公共功能过滤器() 进入你的控制器,让它缓存所有的动作.

I am trying to cache every page that uses the SiteController. In the documentation it says to add public function filters() into your controller to have it cache all actions.

class SiteController extends Controller
{
    /**
     * Declares class-based actions.
     */
     public function filters()
    {
        return array(
            array(
                'COutputCache',
                'duration'=>1000,
                'varyByParam'=>array('id'),
            ),
        );
    }

但是,添加此内容后,我没有看到页面加载量减少.我错过了什么吗?我也没有在我的main.php配置文件中添加了任何东西.这是一个问题吗?谢谢!

However, after adding this, I am not seeing a decrease in page load. Am I missing something? I also have not added anything to my main.php configuration file. Is this an issue? Thanks!

class SiteController extends Controller
{
    /**
     * Declares class-based actions.
     */
    public function actions()
    {
        return array(
            // captcha action renders the CAPTCHA image displayed on the contact page
            'captcha'=>array(
                'class'=>'CCaptchaAction',
                'backColor'=>0xFFFFFF,
            ),
            // page action renders "static" pages stored under 'protected/views/site/pages'
            // They can be accessed via: index.php?r=site/page&view=FileName
            'page'=>array(
                'class'=>'CViewAction',
            ),
        );
    }

    /**
     * This is the default 'index' action that is invoked
     * when an action is not explicitly requested by users.
     */
    public function actionIndex()
    {
        // renders the view file 'protected/views/site/index.php'
        // using the default layout 'protected/views/layouts/main.php'



        $this->render('index');
    }

    /**
     * This is the action to handle external exceptions.
     */
    public function actionError()
    {
        if($error=Yii::app()->errorHandler->error)
        {
            if(Yii::app()->request->isAjaxRequest)
                echo $error['message'];
            else
                $this->render('error', $error);
        }
    }

    /**
     * Displays the contact page
     */
    public function actionContact()
    {
        $model=new ContactForm;
        if(isset($_POST['ContactForm']))
        {
            $model->attributes=$_POST['ContactForm'];
            if($model->validate())
            {
                $headers="From: {$model->email}\r\nReply-To: {$model->email}";
                mail(Yii::app()->params['adminEmail'],$model->subject,$model->body,$headers);
                Yii::app()->user->setFlash('contact','Thank you for contacting us. We will respond to you as soon as possible.');
                $this->refresh();
            }
        }
        $this->render('contact',array('model' => $model));
    }

    /**
     * Displays the login page
     */
    public function actionLogin()
    {
        $model=new LoginForm;

        // if it is ajax validation request
        if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
        {
            echo CActiveForm::validate($model);
            Yii::app()->end();
        }

        // collect user input data
        if(isset($_POST['LoginForm']))
        {
            $model->attributes=$_POST['LoginForm'];
            // validate user input and redirect to the previous page if valid
            if($model->validate() && $model->login())
                $this->redirect(Yii::app()->user->returnUrl);
        }
        // display the login form
        $this->render('login',array('model' => $model));
    }

    /**
     * Logs out the current user and redirect to homepage.
     */
    public function actionLogout()
    {
        Yii::app()->user->logout();
        $this->redirect(Yii::app()->homeUrl);
    }

}

推荐答案

要启用缓存,您需要在需要缓存系统数据库、文件等的 main.php 组件中添加类似于以下代码的内容.

To enable caching you need add something similar to the code below in main.php components demanding on you caching system db, file etc.

'cache'=>array(
'class'=>'system.caching.CDbCache',
        'connectionID'=>'db',
        'autoCreateCacheTable'=>false,
        'cacheTableName'=>'cache',
    ),

这篇关于站点控制器/页面的 Yii 缓存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆