簡體   English   中英

在asp.net中實現緩存的合適方法

[英]Suitable method to implement caching in asp.net

我需要在Asp.net Web應用程序中實現緩存我需要存儲具有不同ID的數據。 那么哪種方法更好?

  1. 使用字典變量。 插入數據(鍵作為ID,數據作為值)。

      Dim mDict As New Dictionary(Of String, String) mDict .Add(bID, uwtTree.WriteXmlString(True, True)) Cache.Insert("mTree", mDict) 

    將其添加到緩存變量。 訪問緩存變量

      If Not Cache("mTree") is Nothing Then 'cast to dictionary and check ID exists , if exsitis get the data End iF 
  2. 將緩存變量用於不同的ID

      Cache.Insert(ID,data) ' each insertion for each ID If Not Cache(ID) is Nothing Then ' get the data. ' End IF 

哪種方法最好? 或者是否存在其他方法? 我使用.Net 3.5 / IIS 7(VB.Net)。 提前致謝

提高性能和內存優化的方法

沒有背景,就不可能說哪個是“更好”。

但是如果你把一個字典放在緩存中(選項1),最好確保它是一個線程安全的字典(比如.NET 4 ConcurrentDictionary)。

兩種方法之間最明顯的區別是,對於選項1,緩存項目到期將導致字典中一次刪除所有項目。 使用選項2,單個項目將獨立到期。

回應評論:

我有xml數據,我將作為字符串存儲在緩存(數據緩存)中。 如果我將它存儲為XmlObject有什么區別嗎?

我看到的主要區別是:

  • 字符串是不可變的,因此訪問它時無需擔心線程安全。 XML對象不是不可變的 - 因此您需要確保不修改從緩存中檢索的對象(或使用鎖來確保任何此類修改是線程安全的)。

  • 如果存儲字符串,則每次從緩存中檢索字符串時,可能會將其解析為XML對象,這將導致潛在的性能損失。

暫無
暫無

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

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