页面缓存可以被看作是 片段缓存一个特殊情况 。 由于网页内容是往往通过应用布局来生成,如果我们只是简单的在布局中调用begincache() 和endcache(),将无法正常工作。 这是因为布局在ccontroller::render()方法里的加载是在页面内容产生之后。
如果想要缓存整个页面,我们应该跳过产生网页内容的动作执行。我们可以使用coutputcache作为动作 过滤器来完成这一任务。下面的代码演示如何配置缓存过滤器:
public function filters() { return array( array( 'coutputcache', 'duration'=>100, 'varybyparam'=>array('id'), ), ); }
上述过滤器配置会使过滤器适用于控制器中的所有行动。 我们可能会限制它在一个或几个行动通过使用插件操作器。 更多的细节中可以看过滤器。
tip: 我们可以使用coutputcache作为一个过滤器,因为它从cfilterwidget继承过来, 这意味着它是一个工具(widget)和一个过滤器。事实上,widget的工作方式和过滤器非常相似: 工具widget (过滤器filter)是在action动作里的内容执行前执行,在执行后结束。
以上就是yii框架官方指南系列31——缓存:页面缓存的内容。
