发送$ _POST时,varyByExpression的值正确

时间:2012-12-19 09:52:25

标签: php caching yii

我需要缓存产品的detail_view,我真的想要使用COutputCache或CHttpCacheFilter,因为它们是以相同方式向100个用户显示页面的最快方式,而无需再次调用控制器。我只有一个问题

  • 如果用户写评论,他通常会收到一条flash消息,评论应显示在产品下方,但我找不到正确的表达式询问是否发送$ _POST ...通常我会要求!空($ _POST)但似乎它总是空的

我已经尝试过这样的事情了

    array(
        'COutputCache',
        'duration'=>7200,
        'varyByRoute' => true,
        'varyByExpression' => 'md5(Yii::app()->request->url . (!empty($_POST) ? CJSON::encode($_POST) : ""))',
    ),

1 个答案:

答案 0 :(得分:0)

实际上,我找到了实现这一目标的最佳方式,并希望与您分享!

网站的每个部分都应该动态加载而不是缓存,您可以使用

进行调用
$this->renderPartial('getFlashMessages');

在这种情况下,getFlashMessages应该是控制器内部的回调函数,它返回输出(不是echo)

非常有帮助,并且可以缓存几乎所有内容并且仍然具有动态内容而无需为每个部分编写ajax!