2014-12-26 33 views
0

在Yii中,我的主佈局和$內容有變化,所以我不需要緩存它。 我的想法是緩存main layout文件(該部分包$內容,從view文件來):Yii使用beginCache/endCache緩存主佈局文件

<? 
$id= 'something'; 
if($this->beginCache($id, array('duration'=>3600, 'variations' =>array(Yii::$app->language)))) { ?> 

<!DOCTYPE html> 
<html> 
<head> 
... 
<?php $this->endCache(); } // end of the upper cache piece ?> 

    <?php echo $content; ?> 

<?php if($this->beginCache($id, array('duration'=>3600))) { // new cashe piece ?>    
     ... 
</body> 
</html> 
<?php $this->endCache(); } ?> 

設置:

的config/main.php

'cache'=>array(
     'class'=>'system.caching.CFileCache', 
      // 'connectionID'=>'db', 
      // 'autoCreateCacheTable'=>false, 
      // 'cacheTableName'=>'cache', 
    ), 
    'memcache'=>array(
     'class'=>'system.caching.CMemCache', 
    ), 

我已將緩存過濾器()放入主控制器中:

組件/ Controller.php這樣

class Controller extends CController 
{ 
    public function filters() 
    { 
    return array(
     'accessControl', // perform access control for CRUD operations 
     'postOnly + delete', // we only allow deletion via POST request 
     array(
      'COutputCache', 
      'duration'=>1000, 
      'varyByParam'=>array('id'), 
     ), 
    ); 
    } 

我不知道如果我這樣做是正確的方式。我的關心也是關於$id - 它應該是什麼樣的? 經過一些測試,我發現沒有大的性能增加... 你會評論/改正我嗎?

回答

0

你的配置文件似乎是錯誤的。你已經啓用了2個Cachings? CFileCache和CMemCache?

看看參考:http://www.yiiframework.com/doc/guide/1.1/en/caching.overview

正確的配置應該是:

'cache'=>array( 'class'=>'system.caching.CFileCache', ),

+0

它是完全可容許的配置中有2個緩存組件。大多數內置的功能將只使用名爲「緩存」的那個。如果你需要第二個,這並不會阻止你。 – Blizz