2011-12-22 5 views
8

、私はのconfig/main.phpファイルを通じてAPCキャッシュを有効にしている: Yiiでの設定によるキャッシングを無効にするにはどうすればよいですか? Yiiので

'cache' => array(
    'class' => 'system.caching.CApcCache', 
), 
を、私はYiiの内蔵のキャッシュ方法を使用する場合、それだけで正常に動作します:

Yii::app()->cache->set('key', $value); 

しかし、設定に基づいてこれを一時的に無効にする方法はありますか?たとえば、YII_DEBUGがtrueに設定されている間に有効にしたくない場合は、$votes = Yii::app()->cache->get("key");と入力してください。空の場合は常にが返されます。

私はちょうどコメントアウト構成設定をすることによって、これをオフにしようとしましたが、それは(不合理ではない)エラーが発生します

Call to a member function get() on a non-object

答えて

11

あなたはすべてのキャッシュ(それが勝っていないキャッシュクラスを設定することができ何も保存せず、get()は常にFALSEを返します)。

おそらく、Yiiはすでにキャッシュなしで出荷されていますか?はい、それはCDummyCacheと呼ばれ、キャッシングは全くありません。

あなたの質問で概説した問題のために、Yii::app()->cacheNULLです。

CachingDocsを参照してください。

-4

このコードを試してください:あなたは、メインlocal.phpファイルに次のコードを追加し、ローカルでのみキャッシュを無効にする必要がある場合

'cache' => array( 
     'class' => 'system.caching.CFileCache' 
    ), 
+1

だけではなくコードで、言葉であなたの答えを教えてください。そして、あなたの答えが他の答えとどのように違うのかを説明してください。 –

+2

キャッシングを変更しないでキャッシングを無効にしたかったのです。これは単に物事がどのようにキャッシュされているかを変えるだけです。 –

+0

これは、ファイルにキャッシュするようにYiiを設定する方法の単なる例です。それは質問に答えません。削除のフラグが付けられています。 –

3

を。

'components' => [ 
... 
    'cache'=> [ 
     'class'=>'CDummyCache', 
    ], 
... 
] 

CDummyCacheは、プレースホルダキャッシュコンポーネントです。

CDummyCacheは何もキャッシュしません。これは、常に 'キャッシュ'アプリケーションコンポーネントを構成できるように提供され、Yii :: app() - > cacheがnullかどうかをチェックする必要はありません。 CDummyCacheを他のキャッシュコンポーネントで置き換えることによって、非キャッシングモードからキャッシングモードにすばやく切り替えることができます。

Yii 1.x: CDummyCache doc

Yii 2.x: DummyCache doc

+0

これは 'Class CDummyCache does not exist'の結果です –

+0

Yii 2.Xを使用してyii \ caching \ DummyCacheとCDummyCacheを使用する場合 –

関連する問題