1

我需要在 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)。提前致谢

提高性能和内存优化的方法

4

1 回答 1

3

没有上下文就不可能说哪个“更好”。

但是,如果您将字典放入缓存中(选项 1),最好确保它是线程安全的字典(例如 .NET 4 ConcurrentDictionary)。

两种方法之间最明显的区别是,使用选项 1,缓存项到期将导致字典中的所有项被立即删除。使用选项 2,单个项目将独立过期。

回应评论:

我有 xml 数据,我将作为字符串存储在缓存(数据缓存)中。如果我将它存储为 XmlObject 有什么区别吗?

我看到的主要区别是:

  • String 是不可变的,因此您在访问它时无需担心线程安全。XML 对象不是不可变的——因此您需要确保不修改从缓存中检索到的对象(或使用锁来确保任何此类修改都是线程安全的)。

  • 如果您存储一个字符串,您可能会在每次从缓存中检索它时将其解析为一个 XML 对象,这将导致潜在的性能损失。

于 2012-05-14T15:46:03.813 回答