クライアントにキャッシュする必要がある小さなデータオブジェクトがあります。名前や役割などのユーザー情報です。私はHttpCacheability.Privateセットを持っています。 Fiddlerを使用してページを表示すると、キャッシュがプライベートであることがわかりますが、別のユーザーがサイトに移動したときに最初にログインしたユーザーのキャッシュされた値が表示されているときに、私はそれがサーバーの値を格納しているようだ。HttpCacheability.Private期待どおりに動作しません。
たとえば、キャッシュの有効期限は10分です。キャッシュが期限切れになった後、私はサイトに行きます。キャッシュはnullなので、db(現在ログインしているユーザーに基づく)から自分のユーザー情報を検索し、キャッシュに書き込みます。今度はジョン・ドゥが3分後にサイトに行き、彼は彼の代わりに自分の情報を表示しています。
私は、クライアントではなくサーバーで各ユーザーの情報をキャッシュするために必要なことがわかりません。どんな助けでも感謝します。
おかげで、
ロンダ
public static void AddUserToCache(User userToCache, string Key)
{
HttpContext context = HttpContext.Current;
HttpCachePolicy cachePolicy = context.Response.Cache;
cachePolicy.SetCacheability(HttpCacheability.Private);
if (context.Cache[Key] == null)
{
context.Cache.Add(Key, userToCache, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(UIConstants.CACHETIMEOUTHOURS, 0, 0), System.Web.Caching.CacheItemPriority.Default, null);
}
}
if (Cache["User"] == null)
{
user = BusinessUtility.GetCurrentUser();
if (user != null)
{
CacheUtility.AddUserToCache(user, "User");
}
}
else
{
user = (User)Cache["User"];
}
私は私のコードの元のバージョンで私はキャッシュプライスのものを持っていなかったことに言及する必要がありますプライベートはデフォルトにする必要があります。それはいずれの方法でも動作しません。 – Rhonda