单个帖子的 yii2 页面缓存

yii2 page caching for single posts

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

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

my post table 有主键作为 id ; 如何将 sql 设置为每个 post id 的单独页面缓存? 谢谢你。

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

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

这确保它只会缓存每个 post ID 的未登录用户的获取请求,如果他们可以执行评论等操作,您不希望缓存除获取或登录用户之外的其他请求并查看每个用户的数据(登录名等)

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