1

我通过 yii2 写博客并使用页面缓存

    'class' => 'yii\filters\PageCache',
    'only' => ['view','video'],
    'duration' => 900,
    'dependency' => [
        'class' => 'yii\caching\DbDependency',
         'sql' => '?',
    ],

我的 post 表的主键为 id ;如何将 sql 设置为每个帖子 ID 的单独页面缓存?谢谢你。

4

1 回答 1

1

只需将当前 ID 传递给它,是的,您可以这样做,使用启用的属性和变体这样

[
            'enabled' => Yii::$app->request->isGet && Yii::$app->user->isGuest,
            'class' => 'yii\filters\PageCache',
            'only' => ['index'],
            'duration' => 900,
            'variations' => [
                Yii::$app->request->get('id')
            ]
]

这确保了它只会缓存每个帖子 ID 的非登录用户的获取请求,如果他们可以做一些事情,比如评论和查看每个用户的数据(登录名等),你不想缓存除获取或登录用户之外的其他请求.)

如果您愿意,您甚至可以使用更高级的配置,例如。带有页面缓存的动态占位符,即使对于经过身份验证的用户也允许缓存,只需检查文档。

于 2017-08-08T11:37:38.427 回答