Хорошо, поэтому я смотрел на кеширование с Yii, и у меня есть вопрос о кешировании страниц (http://www.yiiframework.com/doc-2.0/guide-caching-page.html).
PageController
у меня есть контроллер PageController
с двумя действиями, PageController::actionIndex()
и PageController::actionView($id)
.
Мой массив behaviours()
будет выглядеть примерно так:
'class' => 'yii\filters\PageCache',
'only' => ['index', 'view'],
'duration' => 3600,
'variations' => [
\Yii::$app->language,
\Yii::$app->user->id,
],
'dependency' => [
'class' => 'yii\caching\DbDependency',
'sql' => 'SELECT COUNT(*) FROM 'page' WHERE 'featured' = 1 AND 'deleted' = 0;',
],
Моя проблема в том, что у меня есть 2 действия, но зависимость для каждого из них отличается. Для индекса, я хочу сделать счет страницы, но для просмотра, я мог бы сделать выбор для last_updated.
SELECT last_updated FROM page WHERE id = 1;
Итак, как я могу сделать зависимости для каждого действия для кеширования страниц?
Я не пробовал это, но вы просто должны быть в состоянии сделать
public function behaviors()
{
return [
[
'class' => 'yii\filters\PageCache',
'only' => ['index'],
'duration' => 60,
'variations' => [
\Yii::$app->language,
],
'dependency' => [
'class' => 'yii\caching\DbDependency',
'sql' => 'SELECT COUNT(*) FROM post',
],
],
[
'class' => 'yii\filters\PageCache',
'only' => ['view'],
'duration' => 60,
'variations' => [
\Yii::$app->language,
],
'dependency' => [
'class' => 'yii\caching\DbDependency',
'sql' => 'SELECT last_updated FROM page WHERE id = 1',
],
],
];
}