2012-02-02 1 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

これは

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

働いていたなどのファイルを、あなたは、システムのDBをキャッシュあなたに厳しいmain.phpコンポーネントで以下のコードのようなものを追加する必要があるキャッシュを有効にするには!ありがとう! – Fostah