У меня есть небольшие объекты данных, которые мне нужно кэшировать на клиенте. Это информация пользователя, такая как его имя и роль. У меня есть набор HttpCacheability.Private. Когда я использую Fiddler для просмотра страницы, я вижу, что кэширование является приватным, но вместо хранения кэша для каждого пользователя, когда другой пользователь переходит на сайт, он отображает кэшированные значения для пользователя, который вошел в систему первым. Мне кажется, что он хранит значение сервера.
Например, срок действия кэша истекает через 10 минут. После истечения срока действия кеша я захожу на сайт. Кеш нулевой, поэтому он ищет информацию о моем пользователе из базы данных (на основе данных текущего пользователя) и записывает ее в кеш. Теперь Джон Доу заходит на сайт через 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"];
}