[英]What is the best approach of using cache in ASP.NET project?
我正在ASP.NET中的一個項目中工作。
我要在用戶登錄時第一次緩存用戶名。例如:如果當前用戶已登錄並第一次訪問特定頁面,將顯示一個彈出窗口,否則將不會發生。
用戶名應存儲在客戶端瀏覽器中,並且在用戶關閉瀏覽器之前一直有效。
我的問題是,這樣做的最佳方法是什么?
如果我使用ASP.Net Cache存儲用戶名,是否有任何限制? 例如:
Cache["myCache"] = username;
並在首次加載頁面時從緩存中刪除該項目。
if (!Page.IsPostBack)
{
Cache.Remove("myCache");
}
這是開放的任何評論。 先感謝您。
使用HttpCookie
並根據需要設置到期時間:
如果您未設置cookie的到期時間,則會創建cookie,但不會將其存儲在用戶的硬盤上。 而是將cookie保留為用戶會話信息的一部分。 當用戶關閉瀏覽器時,cookie被丟棄。
//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"]; }
}
您是否考慮過使用Session? 緩存在所有會話之間共享,會話結束后,您需要刪除該項目。 會話不存在此問題,它與每個用戶的會話直接對齊,並在會話結束時自動刪除。 注意:我假設您在說的是顯示名稱,而不是用戶的登錄名。 那應該可以通過HttpContext.User.Identity.Name
。
至於顯示彈出窗口,您可能需要為此使用cookie。 在頁面上運行一些javascript,以檢查cookie,如果不存在,則顯示彈出窗口,然后設置cookie(作為會話cookie),以使彈出窗口不再顯示。 如果您只希望彈出窗口顯示某人首次登錄或僅在登錄時定期顯示等,則也可以使用cookie(而不是會話cookie)。
我不會為此使用緩存。 而是,ASP.NET支持成員資格和角色。 除非您想使用上面列出的cookie解決方案,否則我會用它來管理您的會員資格。 關於彈出頁面,如果僅用於一頁,則可以在用戶個人資料上使用Cookie或設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.