2017-03-21 8 views
0

Yii Framework 2を使用して、私は動的なWebコンテンツを持ち、ユーザーの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に基づいて動的であることに注意してください。

答えて

0

キャッシュデータはアプリケーションのすべての部分で同じです。ユーザーのデータを「記憶」したい場合は、セッションを使用できます。セッションでは、ユーザーごとのデータを格納できます。セッションが終了すると、データはなくなります。

ご覧ください。http://www.yiiframework.com/doc-2.0/guide-runtime-sessions-cookies.html

+0

これは良い解決策です。しかし、キャッシュを使用することで別の解決策を見つけましたが、ユーザーには個別です。キャッシュはキーで動作します。したがって、user_idでデータを取得し、このuser_idをキャッシュキーとして使用します。これを行うことで、私は異なるキーを持つ多くのキャッシュを保存することができ、各キャッシュは1人のユーザー用です。私は正しいですか? –

関連する問題