Manikandan S
Manikandan S

Reputation: 922

What is the correct way to apply the yii2 cache?

As I'm new to the cache mechanism, I gone through the yii2 documentation. As per the documentation, I added the below config in db.php in yii2 basic application.

<?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

];

also I added the cache component in web.php

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

And added the below code while retrieving a record from clients table.

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

I assume my client table one record ex)$id = 3 is cached. So next time if I try to retrieve same record from clients table it will pull from cache not from scratch.

My questions are

  1. What I did above is this correct or anything I need to configure more?
  2. Where it is storing in the local system.

Thanks in advance.

Upvotes: 1

Views: 2779

Answers (1)

e-frank
e-frank

Reputation: 749

what you did is correct for query caching, found in data caching here.

there are more caching mechanisms available, like fragment, page or http caching

as far as i know, the place where the cached data is stored depends on the caching component. apc stores in memory

yii's FileCache will store files under /runtime

good to know you can flush caches with yii's console command yii cache/flush-all

Upvotes: 0

Related Questions