在我的项目中,我们在客户页面上显示自定义小部件。小部件本身不会经常更改,所以我觉得视图缓存在这里非常有用。
但根据我们系统中的哪家公司要求,每个小部件都不同。
我的问题是使用缓存帮助程序...或任何其他方法,我可以根据公司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,如果这将为我们提供任何帮助。
答案 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;
}
}
这是你想要的吗?