我想在yii中缓存数据库内容,并在Yii下拉列表中使用该数据。在下拉列表中,要从数据库加载国家/地区名称。 (有2个表用户和国家)。在用户表单中需要下拉列表。使用缓存从国家/地区表中选择的。放置查询的位置以及何时可以在用户表单中使用缓存结果?
答案 0 :(得分:1)
为了从表中缓存结果然后在下拉列表中使用它,您需要首先在配置文件中设置缓存,如权威指南的Caching Overview中所述。如果你想使用memCache,你可以像这样设置它;
array(
......
'components'=>array(
......
'cache'=>array(
'class'=>'system.caching.CMemCache',
),
),
);
Yii可以使用上面的“缓存概述”链接中列出的许多差异缓存。
然后,您需要使用Yii的data caching功能。您可以在user / _form.php视图中执行此操作,例如;
...
echo $form->dropDownList($model,'country_id',CHtml::listData(Country::model()->cache(1000)->findAll(),'id','name'));
...
但是在你的控制器中执行此操作的MVC方式越多,这样的事情就会起作用;
在你的UserController中:
...
public function actionUpdate()
{
...
$this->render('update',array(
'model'=>$model,
'countryList=>Country::model()->cache(1000)->findAll();,
);
}
...
在您的user / update.php视图中:
...
echo $this->renderPartial('_form', array('model'=>$model,'countryList'=>$countryList));
...
在您的user / _form.php视图中:
...
echo $form->dropDownList($model,'country_id',CHtml::listData($countryList,'id','name'));
...
上面的示例对缓存没有依赖性,因此缓存的值将保持有效,直到时间(在这种情况下为1000秒)到期。
要阅读有关使用缓存依赖关系的更多信息,您可以阅读数据缓存文档的Cache Dependency部分。
[修改强>
如果您需要安装memcached,并且在Windows上使用xampp,这是一个很好的指南,可以让它正常工作:HOW TO INSTALL MEMCACHED ON XAMPP ON WINDOWS 7