0 follower

ページキャッシュ

ページキャッシュはページの内容全てをキャッシュすることを指します。 ページキャッシュは、別の場所で発生することがあります。 たとえば、適切なページヘッダーを使えば、クライアントブラウザは ページを有効期限付きでキャッシュするでしょう。 また、ウェブアプリケーション自身は、ページコンテンツをキャッシュとして 保存できます。このサブセクションでは、後者のやり方について解説します。

ページキャッシュは フラグメントキャッシュ の 特殊な形と捉えられます。ページの内容の多くはビューにレイアウトを適用し 生成されるため、レイアウト中で単純に beginCache()endCache() を呼び出しても動きません。 なぜなら、レイアウトは、コンテンツビューが評価された後に、 CController::render() メソッド中で適用されるからです。

ページ全体をキャッシュするには、ページ内容を生成するアクションの実行を スキップしなければいけません。 これを行うために、COutputCacheフィルタ アクションとして使用出来ます。 キャッシュフィルタの設定方法を下記に示します:

public function filters()
{
    return array(
        array(
            'COutputCache',
            'duration'=>100,
            'varyByParam'=>array('id'),
        ),
    );
}

上記フィルタ設定は、コントローラのすべてのアクションに適用されます。 プラスの演算子だけを使い、1つかいくつかのアクションのみに制限することも できます。詳細については、フィルタ を参照してください。

ヒント: COutputCacheCFilterWidget より継承されているため、 COutputCache をフィルタとして使用できます。 実際、ウィジェットの動作はフィルタにとても似ています: ウィジェット(フィルタ)は、それに含まれているコンテンツ(アクション)が 評価される前に動作が始まり、そして、含まれているコンテンツ(アクション)が 評価された後に、ウィジェット(フィルタ)が終了します。