Cakephp基于自定义键查看缓存

时间:2014-01-10 00:21:35

标签: php cakephp caching cakephp-2.0 xcache

在我的项目中,我们在客户页面上显示自定义小部件。小部件本身不会经常更改,所以我觉得视图缓存在这里非常有用。

但根据我们系统中的哪家公司要求,每个小部件都不同。

我的问题是使用缓存帮助程序...或任何其他方法,我可以根据公司ID缓存窗口小部件吗?

<?php
App::uses('AppController', 'Controller');

class widgetController extends AppController {


    public $helpers = array( 'Cache' );

    public $cacheAction = array(
        'iframeForm' => 3600,
    );

    public $uses = array('Company');

    public function index( $company_id ) {

        //... Load up a ton of data

        $this->layout = 'widget';

        $this->set( compact(/* Set a ton of data */) );

    }
}

是否可以根据公司ID缓存索引视图,以便:

/widget/index/1

从缓存中提供一个副本,但是:

/widget/index/2

会从缓存中获取不同的副本吗?

我们目前正在运行蛋糕2.3和php5.3我们计划转移到cake2.4和php 5.5,如果这将为我们提供任何帮助。

1 个答案:

答案 0 :(得分:0)

我会做这样的事情:

控制器:

public function index( $company_id ) {

    //... Load up a ton of data
    $this->Model->getStuff($company_id);

    $this->layout = 'widget';

    $this->set( compact(/* Set a ton of data */) );

}

模特:

public function getStuff( $company_id ) {
    if(($modelData = Cache::read('modelDataCompanyID_'. $company_id)) == null)
    {
      $modelData = $this->find('all',array('conditions' => 
          array('Model.company_id' => $company_id)));
      Cache::write('modelDataCompanyID_'. $company_id, $modelData);
    }
    return $modeData;
   }
}

这是你想要的吗?