2012-02-02 93 views
0

我想緩存每個使用SiteController的頁面。在documentation它說要將public function filters()添加到您的控制器,讓它緩存所有操作。Yii緩存爲網站控制器/頁

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

但是,添加後,我看不到頁面加載減少。我錯過了什麼嗎?我也有不是添加任何東西到我的main.php configuration file。這是一個問題嗎?謝謝!

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); 
    } 

} 

回答

3

啓用緩存,你需要添加在main.php組件苛求你的緩存系統DB類似下面的代碼什麼的,文件等

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

這個工作!謝謝! – Fostah 2012-02-02 19:06:05