yii2页缓存数组依赖性

w8f9ii69  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(106)

我正在为我的一个页面实现页面缓存。对于依赖关系,我必须检查一个数组,它可以是exist也可以是not。可能的数组键可以是,usersearch['id'],usersearch['name'],usersearch['phone]。我还必须为这些值的任何更改添加依赖关系。另外,我必须为任何更新清除缓存或添加用户表。是否有任何可能的解决方案。?提前感谢

anhgbhbe

anhgbhbe1#

您可以使用变体
公共函数行为(){

$usersearch = Yii::$app->requst->get('usersearch');
    return [
        [
            'class' => 'yii\filters\PageCache',
            'only' => ['index'],
            'duration' => 60,
            'variations' => [
                 'YOUR_DYNAMIC_VALUE1','YOUR_DYNAMIC_VALUE2'
            ],
            'dependency' => [
                'class' => 'yii\caching\DbDependency',
                'sql' => 'SELECT COUNT(*) FROM post',
            ],
        ],
    ];
}

参考link
在您的情况下,您可以使用

'variations' => \Yii::$app->requst->get('usersearch')??[],

'variations' => [
    \/Yii::$app->requst->get('usersearch')['id'] ?? '',
    \Yii::$app->requst->get('usersearch')['name'] ?? '',
    \Yii::$app->requst->get('usersearch')['phone'] ?? '',
]
cbwuti44

cbwuti442#

您可以使用具有以下配置的yii\caching\FileCache组件。
首先,在控制器的init函数中设置该高速缓存:

Yii::$app->setComponents([
   'yourCacheName' => [
       'class' => \yii\caching\FileCache::class,
       'defaultDuration' => 1800, //cache duration in seconds
       'keyPrefix' => Yii::$app->getSession()->getId(). '_'
   ]
]);

这里,参数keyPrefix被设置为链接到会话ID。因此,访问者不会看到彼此的缓存页面。如果内容是静态的并且相等,无论用户或会话如何,则可以删除此参数。
在必须缓存的视图中,可以调用beginCache函数和依赖项,如下所示:

$this->beginCache('cache-id', [
    'cache' => Yii::$app->yourCacheName, // the name of the component as set before
    'variations' => [
       $usersearch['id'] ?? '',
       $usersearch['name'] ?? '',
       $usersearch['phone'] ?? '',        
    ],
    'dependency' => [
       'class' => \yii\caching\DbDependency::class,
       'sql' => 'SELECT count(*) FROM your_user_table'
    ]
]);

// your view

$this->endCache();

相关问题