【发布时间】:2017-08-13 09:44:45
【问题描述】:
使用 Yii 框架 2,我有一个动态网页内容,其数据根据用户的 IP 进行更改。我将我的缓存组件配置如下。
'cache' => [
'class' => 'yii\caching\MemCache',
'keyPrefix' => 'myDomainName',
'defaultDuration' => 86400, // The cache will last for 86400 seconds = 1 day
],
我使用 ActiveRecord 实现缓存如下。
$dependency = new \yii\caching\DbDependency(['sql' => 'SELECT COUNT(*) FROM shop WHERE ip = ' . $ip]);
$result = Shop::getDb()->cache(function ($db) use($ip) {
return Shop::find()->where(['ip' => $ip])->all();
}, 86400, $dependency);
事实上,每个用户都会根据他的 IP 看到不同的内容。这是我第一次尝试在网站上实现缓存。我的问题是,缓存会单独为每个用户存储,还是一个用户的缓存会覆盖另一个用户的缓存?请注意,从上面的代码中,DbDependency 也是基于用户的 IP 动态的。
【问题讨论】:
标签: php caching yii2 memcached