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
- 它應該是什麼樣的? 經過一些測試,我發現沒有大的性能增加... 你會評論/改正我嗎?
它是完全可容許的配置中有2個緩存組件。大多數內置的功能將只使用名爲「緩存」的那個。如果你需要第二個,這並不會阻止你。 – Blizz