cakephp3.xキャッシュを極める

2016年9月15日更新 view: 213 view
https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcSU0g2BDWFZyRHzyY1ZJPMw4T6_Tz-hQfGaSHOTPFZqr6fT1-5dsQ

cakephp3のキャッシュをまとめてみました。

キャッシュを全て削除したい

適当なコントローラーで以下の処理を行う。

スポンサードリンク
$config_list = Cache::configured();
foreach ($config_list as $value) {
Cache::clear(false, $value);
}

キャッシュする時間を指定

app.phpにて以下のコードを書く

'default' => [
'className' => 'Redis',
'database' => 1,
// 'prefix' => 'cache_',
'duration' => '+999 days'
],



'short' => [
'className' => 'Redis',//or File
'database' => 1,
'duration' => '+10 seconds',//10秒で消える
'path' => CACHE,
'prefix' => 'cake_short_'
],

上記、shortの設定の場合は 10秒間だけ有効なキャッシュとなる。

オプションを指定してのキャッシュの読み書き

// shortオプションでキャッシュを書き込み
Cache::write('your_key', "now_is".time(),'short');

// short オプションでキャッシュを読み込み
$data = Cache::read('your_key','short');
var_dump($data);

デフォルトの場合は short 等は必要無いが、書き込み時に
configを指定した場合は読み込み時にも設定する必要がある。

エレメントのキャッシュ

<?=
$this->element('hoge', [
'helptext' => 'すてきな夢を。'
], [
"cache" => ['config' => 'short', 'key' => 'unique value']
]
);
?>

以上がキャッシュの使い方になります。
cakphp2.xまであったビューキャッシュが無くなったみたいですね。

おまけ: エレメントの中でモデルを使う

cakephp3からはcellが使えるみたいだが、わざわざcellに分ける必要も無い。
よほどゴリゴリな内容を書くなら別だがエレメントなんて単純な処理しか書かない。
よってモデルとビューが混在してもいいだろう。との考えから。

<?php
use Cake\ORM\TableRegistry;
$this->Users = TableRegistry::get('Users');
$user = $this->Users->find()
->first();

pd($user->email);
?>

pluginのelementを使う

//プラグイン名.エレメント名
<?= $this->element('Okws.debug'); ?>

あれ?使えないよ。notfoundだよ?
という場合はbootstrap.php で pluginを読みこんでみる。

Plugin::load('Okws');
スポンサードリンク

関連記事

関連カテゴリ