2

有効期限が無限のクエリキャッシュを使用しています。たとえば、次のコードを考えてみましょう。

$channels  = Channels::model()->cache(0)->findAll(array('order' => 'channel_name'));

このステートメントは、キャッシュ内のエントリで作成することになっていますが、実行していますが、キャッシュからデータをフェッチするのではなく、結果を得るために DB に直接アクセスしています。

一方、有効期限 > 0 (ゼロ) を指定すると、スムーズに動作します。例えば:

    $channels  = Channels::model()->cache(20)->findAll(array('order' => 'channel_name'));

20 秒間完全に機能し、キャッシュから結果をフェッチします。

ログを有効にしてプロファイリングを確認したので、それについて確認しました。

Yii::app()->cache->set()またはを使用してキーと値のペアをキャッシュする場合、無限の有効期限も問題なく機能します。Yii::app()->cache->get()

私が何か間違ったことをしているなら、何か考えはありますか?

ありがとう。

4

1 に答える 1

3

ドキュメントによると0、キャッシュが無効になっていることを意味します。

大きな値に設定するだけです。多くの場所で必要な場合は、マジック ナンバー antipatternの混乱を避けるために定数として定義します。

define('IMMUTABLE_CACHE', 60 * 60 * 24 * 365 * 100);

$channels  = Channels::model()->cache(IMMUTABLE_CACHE);
于 2015-01-09T11:11:57.940 に答える