Как сбросить PageCache по тегу? Как пометить PageCache? - PullRequest
1 голос
/ 20 мая 2019

Я использую тип PageCache с некоторой зависимостью sql в моем контроллере. Мне нужно сбросить кэш в контроллере одним щелчком мыши. Как мне пометить?

public function behaviors()
    {
        return [
            [
                'class' => 'yii\filters\PageCache',
                'only' => ['category','index','tags','tag', 'post'],
                'duration' => Yii::$app->params['blog_section'],
                'variations' => [
                    Yii::$app->request->get('code'),
                    \Yii::$app->request->get('page'),

                ],
                'dependency' => [
                    'class' => 'yii\caching\DbDependency',
                    'sql' => 'SELECT MAX(updated_at) FROM post',
                ],

            ],
        ];
    }

1 Ответ

1 голос
/ 20 мая 2019

Вы можете использовать TagDependency в сочетании с DbDependency от ChainedDependency:

'dependency' => [
    'class' => 'yii\caching\ChainedDependency',
    'dependencies' => [
        new \yii\caching\DbDependency([
            'sql' => 'SELECT MAX(updated_at) FROM post',
        ]),
        new \yii\caching\TagDependency([
            'tags' => 'posts',
        ]),
    ],
],

Кэш будет переоценен, если изменится результат SELECT MAX(updated_at) FROM post или изменится TagDependency с именем posts. Вы можете заново подтвердить тег:

TagDependency::invalidate(Yii::$app->cache, 'posts');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...