@fridary

Yii2: Как уменьшить число запросов к db в behaviors()?

На моем Yii2 я делаю 3 одинаковых запроса в бд, что увеличивает время загрузки страницы. Как уменьшить до 1?

public function behaviors()
{
    return [
        'httpCache' => [
            'class' => 'yii\filters\HttpCache',
            'only' => ['view'],
            'lastModified' => function ($action, $params) {
                $post = $this->findModel(Yii::$app->request->get('id'));
                return strtotime($post->updated);
            },
            'etagSeed' => function ($action, $params) {
                $post = $this->findModel(Yii::$app->request->get('id'));
                return serialize([$post->updated, $post->views, $post->comments, Yii::$app->user->isGuest ? 0 : 1]);
            }
        ],
    ];
}

public function actionView($id)
{
    $model = $this->findModel($id);

    return $this->render('view', [
        'model' => $model,
    ]);
}
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 1
zxscv
@zxscv
public function behaviors()
{
   $post = $this->findModel(Yii::$app->request->get('id'));
    return [
        'httpCache' => [
            'class' => 'yii\filters\HttpCache',
            'only' => ['view'],
            'lastModified' => function ($action, $params) use ($post){
                return strtotime($post->updated);
            },
            'etagSeed' => function ($action, $params)  use ($post) {
                return serialize([$post->updated, $post->views, $post->comments, Yii::$app->user->isGuest ? 0 : 1]);
            }
        ],
    ];
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы