webForumDet fria alternativet

Cache helt objekt

.NET

2 svar · 389 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Frågan#1

Jag vill mellanlagra en hel entityklass för att slippa anropa databas varje gång.
Är detta en korrekt metod? Trådsäkert?

aspx

        UserBll bll = new UserBll();
        User user = bll.GetUser(HttpContext.Current.User.Identity.Name);
        Response.Write(user.Suppliers[0].Name);

bll

        public User GetUser(string userName)
        {
            if (HttpContext.Current.Cache["User"] != null)
            {
                return (User)HttpContext.Current.Cache["User"];
            }
            else
            {
                UserDao dao = new UserDao();
                User User = dao.GetUser(userName);
                HttpContext.Current.Cache["User"] = User;
                return User;
            }
        }

Om cache innehåller en Userklass så returneras den rakt av utan att jämföra användarnamn. Men det måste väl vara ok eller?
För inte kan väl en annan användare få tillgång till just denna cache? :stud

Medlem sedan feb. 2005280 inlägg
#2

Jo Current.Cache["User"] blir ju samma för alla, som jag ser det.

För att istället få det användarunikt kan man ju:

        public User GetUser(string userName)
        {
            if (HttpContext.Current.Cache[userName] != null)
            {
                return (User)HttpContext.Current.Cache[userName]; // cache nyckeln blir unik per user
            }
            else
            {
                UserDao dao = new UserDao();
                User User = dao.GetUser(userName);
                HttpContext.Current.Cache.Add(userName, User, null, DateTime.Now.AddMinutes(10), Cache.NoSlidingExpiration,
                System.Web.Caching.CacheItemPriority.NotRemovable, null); // Lagra i cache i x antal minuter       
                return User;
            }
        }
Medlem sedan juni 20003 076 inlägg
#3

Aha! Vilken tur jag frågade då! För jag var rätt säker på att det hade fungerat! :)
Tack frequz! :bire

263 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)