【发布时间】:2011-11-27 19:44:01
【问题描述】:
我需要缓存一个通用列表,这样我就不必多次查询数据库。在 Web 应用程序中,我只需将其添加到 httpcontext.current.cache 即可。在控制台应用程序中缓存对象的正确方法是什么?
【问题讨论】:
-
@Josh:这绝对是 not 该问题的重复,因为问题是“在控制台中缓存对象的 正确 方法是什么应用”。
System.Web.Caching.Cache不是在控制台应用程序中缓存对象的正确方法。 -
@MusiGenesis:在 .Net 4.0 之前,这是一种非常有效的缓存方式。 hanselman.com/blog/UsingTheASPNETCacheOutsideOfASPNET.aspx
-
@Josh:我在这里遗漏了什么吗?在 ASP.NET 中,页面是无状态的,因此在页面生命周期之后将内容保存在内存中需要 System.Web 缓存之类的东西。控制台应用程序没有这样的问题。 Hanselman 的博文没有解释为什么使用
System.Web.Caching.Cache是必要或可取的 - 它只是说明这是可能的(当然是这样)。 -
@MusiGenesis:缓存不仅仅是“将内容保存在内存中”。它提供线程安全,以及让项目过期的能力,包括绝对的和滑动的。当人们希望避免进行潜在的昂贵调用来检索数据时,在任何应用程序中使用它都是可取的。