我在视图文件中这样写的代码:
if ( $this->beginCache( 'q23', array('duration'=>60) ) ) {
$this->renderDynamic('getDBOneTable');
$this->endCache();
}
第一次时页面输出一次结果:内容为:
<###dynamic-0###>1
2
2
2
23
3
5
5
在在
第二次时页面中输出两次结果。
内容为:
1
2
2
2
23
3
5
5
在在
<###dynamic-0###>1
2
2
2
23
3
5
5
在在
getDBOneTable是controller中的一个public方法,输出表中记录。
代码如下:
public function getDBOneTable() {
$a = TestDataMemCache::model()->findAll();
foreach ($a as $<img src='http://www.yiiframework.com/ipb/public/style_emoticons/default/cool.gif' class='bbc_emoticon' alt='B)' /> {
echo $b->values.'<br/>';
}
}
不知何原因?还请指教。
另:我在CController.php文件中的方法renderDynamic中看到有一行代码,不知是不是调试代码:echo "<###dynamic-$n###>".
如果说错,还请见谅!
qiang
(Qiang Xue)
2
你能试试把geDbOneTable改成time么?
另外相关的view代码是怎么样的?你有没有启用什么filter?
[size=4]1.有没有启用什么filter?[/size]
我针对另一action使用了filter
public function filters()
{
return array(
/**
* 针对页面缓存的设置
*/
array(
'system.web.widgets.COutputCache + Page',
'duration' => 60,
'varyByParam' => array('id'),
),
);
}
[size=4]2.相关的view代码是怎么样的[/size]
<?php
//应用头信息
$this->widget('application.components.TitleApplication',array(
'title'=>'MemCache数据库单表记录缓存示例',
));
?>
<div class="content_left">
<!--应用自己的导航开始-->
<?php
//应用菜单
$this->widget('application.components.MenuCache');
?>
<!--应用自己的导航结束-->
<div class="mt10 f16">
<p>
此页面应用了页面缓存,缓存时间为60秒,<br/>
为了演示效果,通过两种方式操作:1.更改layout中的文字,查看缓存是否生效,2.更改本页代码,查看是否生效<br/><br/>
<?php
$cacheId = 'varFirst';
echo "缓存ID为:$cacheId<br/>";
echo "缓存内容为:<br/>";
if ( $this->beginCache( 'q23', array('duration'=>60) ) ) {
$this->renderDynamic('getDBOneTable');
$this->endCache();
}
?>
</p>
</div>
</div>
如把视图中的$this->renderDynamic('getDBOneTable');改成$this->renderDynamic('time');时,显示内容:
1243822337[color=red]1//这个1是记录中的数据[/color]
2
2
2
23
3
5
5
但如果把controller中的方法getDBOneTable也改成time,那现象与我发的原贴效果一致。
我以为更新到了1.0.5版本,但我查了一下原来一直用的是1.0.4.
我今天重新下载了1.0.5,这回正常了,没有上边的现象了。
非常感谢!!