データベースのコンテンツをyiiにキャッシュし、そのデータをYiiドロップダウンリストで使用したいと思います。ドロップダウンリストで、データベースから国名をロードします。(2つのテーブルユーザーと国があります)。ユーザーフォームには、ドロップダウンリストが必要です。キャッシュを使用して国のテーブルから選択したもの。クエリはどこに配置され、キャッシュ結果をユーザーフォームでいつ使用できるのでしょうか。
1 に答える
テーブルからの結果をキャッシュし、それをドロップダウンで使用するには、決定版ガイドのキャッシュの概要で説明されているように、最初に構成ファイルでキャッシュを設定する必要があります。memCache を使用したい場合は、次のように設定できます。
array(
......
'components'=>array(
......
'cache'=>array(
'class'=>'system.caching.CMemCache',
),
),
);
Yii は、上記のキャッシュの概要のリンクにリストされている多数の差分キャッシュを使用できます。
次に、Yii のデータ キャッシング機能を利用する必要があります。たとえば、 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 秒) が期限切れになるまで有効なままになります。
キャッシュ依存関係の使用について詳しくは、データ キャッシング ドキュメントのキャッシュ依存関係セクションをご覧ください。
[編集]
memcached をインストールする必要があり、Windows で xampp を使用している場合は、これを機能させるための優れたガイドです: HOW TO INSTALL MEMCACHED ON XAMPP ON WINDOWS 7