好奇,如果有人有意见哪种方法会更适合于asp.net缓存。选项一,缓存中较为复杂的项目或较少复杂项目。大型asp.net缓存存储的持久化方法的效率
为了便于讨论,可以想象我的网站有SalesPerson和Customer对象。这些都是非常简单的类,但我不想与数据库聊天,所以我想懒惰地将它们加载到缓存中,并在我做出更改时将它们从缓存中取消 - 这很简单。
选项1 创建词典并缓存整个字典。当我需要从缓存中加载一个SalesPerson的实例时,我得到Dictionary并对Dictionary执行一个普通的密钥查找。
选项2 将每个项目的关键字前缀并直接存储在asp.net缓存中。例如,缓存中的每个SalesPerson实例都将使用前缀加上该对象的键的组合,因此它可能看起来像sp_ [guid]并存储在asp.net缓存中,并且缓存中也存储有Customer对象键像cust_ [guid]。
我对选项二的担心之一是,在SalesPerson,Customer和十几个其他类别之间,条目数量会变得非常大,我可能在缓存中有25K项目,并且对于像字符串资源这样的高度重复查找我在几个地方使用的代码可能会支付罚款,而代码会通过缓存的密钥集合查找其中的25K。
我相信在某些时候有一个收益递减这里在缓存中存储太多的项目,但我很好奇,在这些问题上的观点。
System.Web.Caching命名空间中的ASP.NET缓存不会序列化,我不这么认为。这是Session/Application/ViewState /等的主要优势之一。 – sliderhouserules 2009-01-06 06:11:12