繁体   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