7
5

More than 5 years have passed since last update.

CakePHP2でのElementキャッシュで見た目から処理を減らしていく

Last updated at Posted at 2015-08-15

Webページ内に、この部分は1時間に一回更新されればいいなど、Viewの一部だけキャッシュしたいと思うことが結構ある。

CakePHP2ではElement単位でキャッシュが可能。そのElementを生成するのに必要なデータの取得等の処理も当然省略できる。

Elementをキャッシュする

$this->Element('user_ranking', [], [
    'cache' => true
]);

Elementを生成するときのみに使用する処理の追加

$this->requestAction()を利用することでViewからControllerの任意のアクションを呼び出せる。これをElement内にかくことで、このElementを描画するときのみアクションを実行させることができる。

$ranking = $this->requestAction([
    'controller' => 'Users',
    'action' => 'getUserRanking'
]);

actionはこんなかんじ。$this->request->is('requested')requestAction()からのリクエストを検知できる。

UsersController.php
public function getUserRanking() {

    if ($this->request->is('requested')) {
        // requestAction()時のみrankingを返す
        return $this->UserRanking->getUserRanking();
    }
    throw new BadRequestException();
}

参考資料

ほぼほぼこちらに書いてある内容です。

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5