0

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

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

我已经尝试过这样的事情

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

1 回答 1

0

实际上,我找到了实现这一点的最佳方法,并想与您分享!

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

$this->renderPartial('getFlashMessages');

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

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

于 2013-02-04T10:23:15.217 回答