簡體   English   中英

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

[英]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被丟棄。

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或設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM