클라이언트에 캐시해야하는 작은 데이터 개체가 있습니다. 이름과 역할과 같은 사용자 정보입니다. 나는 HttpCacheability.Private 세트가 있습니다. 피들러를 사용하여 페이지를 볼 때 캐싱은 비공개이지만 다른 사용자가 사이트로 이동할 때 각 사용자에 대한 캐시를 저장하는 대신 처음 로그인 한 사용자의 캐시 된 값을 표시하는 것을 볼 수 있습니다. 서버 값을 저장하는 것 같습니다.HttpCacheability.Private 예상대로 작동하지 않습니다.
예를 들어 캐시의 유효 기간은 10 분입니다. 캐시가 만료 된 후 사이트로 이동합니다. 캐시는 null이므로 현재 사용자로 로그인 한 db에서 내 사용자 정보를 조회하여 캐시에 씁니다. 이제 John Doe는 내가 촬영 한 후 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"];
}
나는 또한 내 코드의 원래 버전에서 Private이 기본값이어야하므로 cachepolicy 항목이 없다는 것을 언급해야합니다. 어느 쪽이든 작동하지 않습니다. – Rhonda