【问题标题】:Yii, PageCaching and multiple dependenciesYii、PageCaching 和多个依赖项
【发布时间】:2017-02-08 20:50:28
【问题描述】:

好的,所以我一直在研究 Yii 的缓存,我有一个关于页面缓存的问题 (http://www.yiiframework.com/doc-2.0/guide-caching-page.html)。

假设我有一个控制器 PageController 有 2 个动作,PageController::actionIndex()PageController::actionView($id)

我的 behaviours() 数组看起来像这样:

'class' => 'yii\filters\PageCache',
'only' => ['index', 'view'],
'duration' => 3600,
'variations' => [
    \Yii::$app->language,
    \Yii::$app->user->id,
],
'dependency' => [
    'class' => 'yii\caching\DbDependency',
    'sql' => 'SELECT COUNT(*) FROM `page` WHERE `featured` = 1 AND `deleted` = 0;',
],

我的问题是,我有 2 个操作,但每个操作的依赖项是不同的。对于索引,我想计算页数,但对于视图,我可能想为 last_updated 进行选择。

SELECT last_updated FROM page WHERE id = 1;

那么我该如何为页面缓存的每个操作建立依赖关系?

【问题讨论】:

  • 您是否尝试过简单地将这种行为分成两种行为?

标签: php caching yii yii2


【解决方案1】:

我没有尝试过,但你应该只是能够做一个

public function behaviors()
{
    return [
        [
            'class' => 'yii\filters\PageCache',
            'only' => ['index'],
            'duration' => 60,
            'variations' => [
                \Yii::$app->language,
            ],
            'dependency' => [
                'class' => 'yii\caching\DbDependency',
                'sql' => 'SELECT COUNT(*) FROM post',
            ],
        ],
        [
            'class' => 'yii\filters\PageCache',
            'only' => ['view'],
            'duration' => 60,
            'variations' => [
                \Yii::$app->language,
            ],
            'dependency' => [
                'class' => 'yii\caching\DbDependency',
                'sql' => 'SELECT last_updated FROM page WHERE id = 1',
            ],
        ],
    ];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-03
    • 1970-01-01
    • 2018-11-10
    • 2013-06-22
    • 1970-01-01
    • 2015-08-22
    • 2013-04-20
    相关资源
    最近更新 更多