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



我正在ASP.NET项目中工作。

我想在用户第一次登录时缓存用户名。例如:如果当前用户是第一次登录并访问一个特定的页面,将会有一个弹出窗口显示,否则什么都不会发生。

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

我的问题是,做这件事的最好方法是什么?

任何限制,如果我使用ASP。网络缓存存储用户名?例如:

Cache["myCache"] = username;

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

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

欢迎任何评论。

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

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

ASP。NET Cookies概述

//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"]; }
}

如何写一个Cookie

如何:读取Cookie

您考虑过使用Session吗?在所有会话中共享缓存将要求您在会话结束后删除该项。会话没有这个问题,它直接与每个用户的会话对齐,并在会话结束时自动删除。注意:我假设您讨论的是显示名,而不是用户的登录名。这应该可以通过HttpContext.User.Identity.Name获得。

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

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

最新更新