在ASP.NET项目中使用缓存的最佳方法是什么?

时间:2011-10-12 03:23:43

标签: javascript asp.net caching browser

我在ASP.NET中的一个项目中工作。

我想在用户登录时首次缓存用户名。例如:如果当前用户首次登录并访问特定页面,将会显示一个弹出窗口,否则没有任何反应。

用户名应存储在客户端浏览器中,并在用户关闭浏览器之前保持有效。

我的问题是,这样做的最佳方法是什么?

如果我使用ASP.Net Cache存储用户名,有任何限制吗? 例如:

Cache["myCache"] = username;

并在第一次加载页面时从缓存中删除该项目。

if (!Page.IsPostBack)
{
     Cache.Remove("myCache");
}

这对任何评论都是开放的。提前谢谢。

3 个答案:

答案 0 :(得分:3)

使用HttpCookie并根据需要设置到期时间:

  

如果您没有设置cookie的过期时间,则会创建cookie   它不存储在用户的硬盘上。相反,cookie是   作为用户会话信息的一部分进行维护。当用户   关闭浏览器,cookie被丢弃。

ASP.NET Cookies Overview

//write
HttpCookie myCookie = new HttpCookie("UserSettings");
myCookie["Font"] = "Arial";
myCookie["Color"] = "Blue";
//myCookie.Expires = DateTime.Now.AddDays(1d);
Response.Cookies.Add(myCookie);

//read
if (Request.Cookies["UserSettings"] != null)
{
    string userSettings;
    if (Request.Cookies["UserSettings"]["Font"] != null)
    { userSettings = Request.Cookies["UserSettings"]["Font"]; }
}

How to: Write a Cookie

How to: Read a Cookie

答案 1 :(得分:2)

您是否考虑过使用Session?缓存在所有会话上共享,要求您在会话结束后删除该项目。会话不会遇到此问题,它会直接与每个用户的会话保持一致,并在会话结束时自动删除。注意:我假设您正在谈论显示名称,而不是用户的登录名称。这应该可以通过HttpContext.User.Identity.Name获得。

至于显示弹出窗口,您可能希望使用cookie。在检查cookie的页面上运行一些javascript,如果不存在则显示弹出窗口,然后设置cookie(作为会话cookie),以便弹出窗口不再显示。如果您只希望弹出窗口在第一次登录时显示或仅定期登录等,则也可以使用cookie(不是会话cookie)。

答案 2 :(得分:1)

我不会为此使用缓存。相反,ASP.NET支持Membership和Roles。我会用它来管理你的会员资格,除非你想使用上面列出的cookie解决方案。关于弹出的页面,如果只有一页,您可以在用户的​​个人资料中使用cookie或设置。