Yii缓存过滤器指定操作

时间:2012-11-02 00:07:43

标签: php yii

我想只在控制器中缓存指定的操作,如何使用该过滤器指定?

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

信息:

上述过滤器配置将使过滤器应用于控制器中的所有操作。我们可以仅使用加号运算符将其限制为一个或几个动作。更多细节可以在过滤器中找到。

但我不知道如何使用= /

1 个答案:

答案 0 :(得分:0)

实际上很简单,请参阅the guide

  

使用加号和减号运算符,我们可以指定应该和不应该应用过滤器的操作。在上面,postOnly过滤器将应用于编辑和创建操作,而PerformanceFilter过滤器将应用于除编辑和创建之外的所有操作。如果过滤器配置中既没有加号也没有减号,则过滤器将应用于所有操作。

所以你的代码会变成这样:

array(
    'COutputCache + actionId, actionId2', // applies filter to only actions actionId and actionId2
    'duration'=>100,
    'varyByParam'=>array('id'),
),

或者,如果要对所有操作应用过滤器,只需将actionId和actionId2:

应用于所有操作
array(
    'COutputCache - actionId, actionId2', // applies filter to all actions except actions actionId and actionId2
    'duration'=>100,
    'varyByParam'=>array('id'),

)

使用+-取决于要指定哪个较小的集合,例如,要将10个操作应用于除2个操作之外的所有操作,请使用-指示过滤器不应适用的2个操作。但是,如果要从10个操作中仅将过滤器应用于2个操作,请使用+


注意:如果您想知道actionId,它是public function actionHelloWorld(){...}中操作后的字符串,因此在此示例中为helloWorld