yii2, как правильно кешировать dataProvider

Как закешировать dataProvider? У меня есть система Сообществ и я хотел бы закешировать результат, а обновлять кеш только тогда когда пользователь создаст новое сообщество.

В моделе community получаю dataProvider

public function userCommunities()
    {
        $query = self::find()->select(['id', 'img', 'name'])->where(['user_id' => Yii::$app->user->id]);
        $queryCount = self::find()->where(['user_id' => Yii::$app->user->id])->count();

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
            'totalCount' => $queryCount,
            'pagination' => [
                'pageSize' => 10
            ],
            'sort' => [
                'defaultOrder' => [
                    'id' => SORT_DESC
                ]
            ],
        ]);
        return $dataProvider;
    }

В контроллере вызываю метод для получения dataProvider

$communityModel = new Community();
        $comDataProvider = $communityModel->userCommunities();

вывожу данные в View:

<?php
            echo ListView::widget([
                'dataProvider' => $dataProvider,
                'itemOptions' => ['class' => 'item'],
                'itemView' => '/community/_indexCommunities',
                'summary' => '',
                'pager' => [
                    'class' => ScrollPager::className(),
                    'noneLeftText' => '',
                    'spinnerTemplate' => '
                                        <div class="d-flex justify-content-center loader-historis">
                                            <div class="spinner-border" role="status">
                                                <span class="sr-only"></span>
                                            </div>
                                        </div>
                    ',
                    'enabledExtensions' => [ScrollPager::EXTENSION_SPINNER, ScrollPager::EXTENSION_NONE_LEFT, ScrollPager::EXTENSION_PAGING],
                    'eventOnScroll' => 'function() {$(\'.ias-trigger a\').trigger(\'click\')}',
                ]
            ]);
            ?>

Ответы (0 шт):