/** * Action that displays posts list * @return string */ public function actionIndex() { $languageId = Yii::$app->multilingual->language_id; $posts = Post::find()->orderBy(['created_at' => SORT_DESC]); $count = Yii::$app->cache->lazy(function () use($posts) { return $posts->count(); }, "PostsCount:{$languageId}", 86400, Post::commonTag()); $pagination = new Pagination(['totalCount' => $count]); $posts = Yii::$app->cache->lazy(function () use($posts, $pagination) { return $posts->offset($pagination->offset)->limit($pagination->limit)->all(); }, "Posts:{$pagination->offset}:{$pagination->limit}:{$languageId}", 86400, Post::commonTag()); return $this->render('index', ['posts' => $posts, 'pagination' => $pagination]); }
/** * Invalidate model tags. * @return bool */ public function invalidateTags() { /** @var \DevGroup\TagDependencyHelper\TagDependencyTrait $this */ \yii\caching\TagDependency::invalidate($this->getTagDependencyCacheComponent(), [static::commonTag(), Post::commonTag(), $this->objectTag(), NamingHelper::getObjectTag(Post::className(), $this->getPrimaryKey())]); return true; }