mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-06 16:16:53 +01:00
48 lines
1.8 KiB
Plaintext
48 lines
1.8 KiB
Plaintext
Page Caching
|
|
============
|
|
|
|
Page caching refers to caching the content of a whole page. Page caching
|
|
can occur at different places. For example, by choosing an appropriate page
|
|
header, the client browser may cache the page being viewed for a limited
|
|
time. The Web application itself can also store the page content in cache.
|
|
In this subsection, we focus on this latter approach.
|
|
|
|
Page caching can be considered as a special case of [fragment
|
|
caching](/doc/guide/caching.fragment). Because the content of a page is
|
|
often generated by applying a layout to a view, it will not work if we
|
|
simply call [beginCache()|CBaseController::beginCache] and
|
|
[endCache()|CBaseController::endCache] in the layout. The reason is because
|
|
the layout is applied within the [CController::render()] method AFTER the
|
|
content view is evaluated.
|
|
|
|
To cache a whole page, we should skip the execution of the action
|
|
generating the page content. We can use [COutputCache] as an action
|
|
[filter](/doc/guide/basics.controller#filter) to accomplish this task. The
|
|
following code shows how we configure the cache filter:
|
|
|
|
~~~
|
|
[php]
|
|
public function filters()
|
|
{
|
|
return array(
|
|
array(
|
|
'COutputCache',
|
|
'duration'=>100,
|
|
'varyByParam'=>array('id'),
|
|
),
|
|
);
|
|
}
|
|
~~~
|
|
|
|
The above filter configuration would make the filter to be applied to all
|
|
actions in the controller. We may limit it to one or a few actions only by
|
|
using the plus operator. More details can be found in
|
|
[filter](/doc/guide/basics.controller#filter).
|
|
|
|
> Tip: We can use [COutputCache] as a filter because it extends from
|
|
[CFilterWidget], which means it is both a widget and a filter. In fact, the
|
|
way a widget works is very similar to a filter: a widget (filter) begins
|
|
before any enclosed content (action) is evaluated, and the widget (filter)
|
|
ends after the enclosed content (action) is evaluated.
|
|
|
|
<div class="revision">$Id$</div> |