Php 发送$\u POST时varyByExpression的正确值

Php 发送$\u POST时varyByExpression的正确值,php,caching,yii,Php,Caching,Yii,我需要缓存产品的详细视图,我真的很想使用COutputCache或CHttpCacheFilter,因为它们是以相同方式向100多个用户显示页面的最快方式,无需再次调用控制器。我只有一个问题 如果一个用户写了一条评论,他通常会收到一条闪光消息,评论应该显示在产品下面,但是我找不到正确的表达方式来询问是否发送了$\u POST。。。正常情况下我会要求的!空($\u POST),但它似乎总是空的 我已经试过了 array( 'COutputCache',

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

  • 如果一个用户写了一条评论,他通常会收到一条闪光消息,评论应该显示在产品下面,但是我找不到正确的表达方式来询问是否发送了$\u POST。。。正常情况下我会要求的!空($\u POST),但它似乎总是空的
我已经试过了

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

事实上,我找到了最好的方法来实现这一点,并想与大家分享

网站的每一部分都应该动态加载,而不是缓存,你可以用它来调用

$this->renderPartial('getFlashMessages');
在这种情况下,getFlashMessages应该是控制器内部的回调函数,返回输出(而不是echo)

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