簡體   English   中英

ASP.NET中的System.Web.Caching.Cache

[英]System.Web.Caching.Cache in ASP.NET

我剛剛發現在我正在處理的項目中使用了System.Web.Caching.Cache ,但我很難找到有關它的更多信息。

我的問題是該緩存如何持久化? 是客戶端(類似於ViewState ),服務器端( Session )嗎? 完全不同?

例:

protected string FileContent 
{ 
    get 
    { 
        return Cache[FILE_UPLOAD_KEY + Id] as string ?? GetFileUpload(); 
    } 
}

它是服務器端的應用程序級緩存。

此類的一個實例是在每個應用程序域中創建的,只要該應用程序域保持活動狀態,它就一直有效。 可通過HttpContext對象的Cache屬性或Page對象的Cache屬性獲得有關此類的實例的信息。 緩存類,MSDN

它可以設置緩存對象的時間限制等。 並且它不保證當您再次需要該對象時該對象將在那里。 只要有足夠的內存,它將項目保留在緩存中。

因此,它不打算在頁面視圖(為此使用ViewStateSession )或控件(為此使用Items )之間傳遞對象。 它旨在緩存構建成本很高的全局對象(可在所有客戶端的任何請求中訪問)。

它一直保存在服務器上,並且在整個會話中都是全局的,例如Application 因此,當您在Cache設置一個值時,所有用戶都可以使用它,直到它過期。

編輯

您得到的示例可能不太正確(除非GetFileUpload()實際上寫入高速緩存)。 通常,您對緩存的調用類似於:

string GetSomeStringFromCache()
{
    string someString = Cache[SomeKey] as string;
    if (someString == null)
    {
        someString = GetStringUsingSomeExpensiveFunction();
        Cache.Add(SomeKey, someString, /*a bunch of other parameters*/);
    }
    return someString;
}

如果它尚不在緩存中,則將其放入緩存,但如果存在,它將僅使用它。

暫無
暫無

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

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