2

我正在建立一个小型网店。这家商店有类别和产品。1 个产品可以有多个类别。在产品页面,面包屑路径显示引用类别名称(通过 urlReferrer)。

我试图让 Yii 使用 OutputCache 逐页缓存,具体取决于引用者(类别,因为这会改变面包屑路径)。

这是我的非工作过滤器:

public function filters() {

    return array(
        array(
            'COutputCache',
            'duration' => 3600,
            'varyByExpression' => array($this->getReferringCategory()),
            'varyByParam' => array('id','slug'),
            'dependency' => array(
                'class' => 'CDbCacheDependency',
                'sql' => 'SELECT MAX(date_updated) FROM product WHERE product_id = '.Yii::app()->request->getParam('id'),
            ),
        )
    );
}

有人对此有好的方法吗?

最好的问候,谢谢!

4

1 回答 1

0

'varyByExpression' 参数应该是 PHP 表达式(将由 eval 评估)或 PHP 回调(将由 call_user_func_array() 评估)

如果您使用 php >=5.4.0,请尝试以下操作:

'varyByExpression' => function(){return $this->getReferringCategory();},

或者像这样,对于旧版本:

'varyByExpression' => '$this->getReferringCategory()',
于 2014-02-17T03:48:28.483 回答