0

製品の detail_view をキャッシュする必要があり、そのために COutputCache または CHttpCacheFilter を使用したかったのは、コントローラーを再度呼び出さずに同じ方法で何百人ものユーザーにページを表示する最速の方法だからです。1つだけ問題があります

  • ユーザーがコメントを書き込むと、通常はフラッシュ メッセージが表示され、コメントは製品の下に表示されるはずですが、$_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 に答える