2016-08-05 6 views
1

キャッシュメカニズムが初めてのので、yii2 documentationを調べました。ドキュメントごとに、yii2基本アプリケーションのdb.phpに以下の設定を追加しました。yii2キャッシュを適用する正しい方法は何ですか?

<?php 

return [ 
    'class' => 'yii\db\Connection', 
    'dsn' => 'mysql:host=localhost;dbname=db_new', 
    'username' => 'root', 
    'password' => 'root123', 
    'charset' => 'utf8', 
    'enableQueryCache' => true, 
    'queryCacheDuration' => 86400, 
    'enableSchemaCache' => true, 
    // Name of the cache component used to store schema information 
    'schemaCache' => 'cache', 
    // Duration of schema cache. 
    'schemaCacheDuration' => 86400, // 24H it is in seconds 

]; 

も私はweb.phpに

'components' => [ 
    'cache' => [ 
     'class' => 'yii\caching\ApcCache' 
    ] 
] 

をキャッシュコンポーネントを追加し、クライアントのテーブルからレコードを取得しているときに以下のコードを追加しました。

$db = Clients::getDb(); 
$client = $db->cache(function ($db)use($id) { 
    return Clients::find()->where(['id' => $id])->all(); 
}); 

私のクライアントテーブルは1つのレコードと仮定します。例)$ id = 3がキャッシュされます。次回は、クライアントテーブルから同じレコードを取得しようとすると、最初からキャッシュから取り出されません。

私の質問は、私は上記のやったこれが正しい何

  1. または私は より多くを構成するために必要なものがありますか?
  2. ローカルシステムに格納されている場所。

ありがとうございます。

+0

でキャッシュをフラッシュすることができます知っていますか? – ThanhPV

+0

正しく表示されます。あなたはそれに何か問題がありますか?キャッシュされたデータが変更される可能性がある場合のキャッシュ無効化について忘れないでください... http://www.yiiframework.com/doc-2.0/guide-caching-data.html#cache-dependencies – oakymax

+0

@ThanhPVいいえ、キャッシュに関連するものは何もインストールされていません。 –

答えて

0

data caching hereで見つかったクエリキャッシングには正しいことがあります。 fragmentpageまたは

http cachingは、私の知る限りでは、キャッシュされたデータが格納されている場所は、キャッシング・コンポーネントに依存よう

は、利用できるより多くのキャッシングメカニズムがあります。 /ランタイム

良いの下apc stores in memory

のYiiのファイルキャッシュ格納するファイルは、あなたがあなたのサーバーでAPCキャッシュをインストールしてくださいYiiののコンソールコマンドyii cache/flush-all

+0

あなたの情報をありがとう。私はあなたに知らせるように努力します –

関連する問題