このフィルターを作成しました
return array(
array(
'CHttpCacheFilter + View',
'lastModified'=>Yii::app()->db->createCommand(
"SELECT MAX(`date_taken`) FROM image")->queryScalar(),
),
);
actionView
PHP Yiiのすべてのデータをキャッシュします
問題は、ページに動的にする必要がある領域があることです。
そのページの部分キャッシュを見てきました。これはパフォーマンス上の利点をもたらしません。主な重みは、SQL クエリにあります。キャッシュキーにデータを追加してみました。ただし、データが 1 MB を超えるため、これはうまく機能しません。誰でもこれを回避する最善の方法を知っています
/**
* View for a Image
* @param string $alias_title the image a user would like to view
*/
public function actionView($alias_title)
{
$associated_image_details = Image::getImageFromAliasTitle($alias_title);
$image = Utils::getArrayOrNull($associated_image_details, 0);
$album = Utils::getArrayOrNull($associated_image_details, 1);
$tag= Utils::getArrayOrNull($associated_image_details, 2);
$comment= Utils::getArrayOrNull($associated_image_details, 3);
$media_set= Utils::getArrayOrNull($associated_image_details, 4);
$media_gallery= Utils::getArrayOrNull($associated_image_details, 5);
$media_group= Utils::getArrayOrNull($associated_image_details, 6);
$this->render('view', array(
'image' => $image,
'album'=>$album,
'comment'=>$comment,
'tag'=>$tag,
'media_set'=>$media_set,
'media_gallery'=>$media_gallery,
'media_group'=>$media_group
));
}