2014-11-06 60 views
2

按照MSDN文档here为什么我应该只在应用程序生命周期的早期创建MemoryCache?

除非需要,不要创建的MemoryCache实例。如果 在客户端和Web应用程序中创建缓存实例,则应在应用程序生命周期的早期创建MemoryCache 实例。您必须创建 您的应用程序中将使用的缓存实例的数量,并将对缓存实例的引用存储在可以全局访问的 变量中。例如,在ASP.NET 应用程序中,可以将引用存储在应用程序状态中。如果 只在应用程序中创建单个缓存实例,则使用 默认缓存,并在需要访问缓存时需要从Default属性获取对该缓存的引用。

这并不能解释这背后的原因,还有一些其他问题询问了清除MemoryCache,但似乎还没有得出可靠的结论。正如我收集的,我的选择是要么处置MemoryCache并创建一个新的实例,根据上述文档不建议这样做,或者使用枚举器,由于性能问题,也不建议这样做。 Trim()已被证明是不可靠的,所以我正在调查为什么在我的应用程序生命周期中实例化一个MemoryCache被认为是一个坏主意。

为了深入了解为什么我很好奇,这里的主要问题是我希望我的MemoryCache仅适用于一系列方法调用的范围。这些方法调用是在同一对象的不同实例之间进行的,它们共享通过数据库检索到的数据,虽然不太可能,但可能会在我分配给过期窗口的几秒钟内发生变化。我的想法是创建一个新的MemoryCache实例,只要我开始一系列的方法调用,以确保我拥有最新的数据,而不是每次访问数据库的次数都很高。但是,MSDN建议不要创建新的实例,并建议在全局变量中包含所有实例。

因此,在短期,我们为什么建议实例应用程序生命周期的开始期间MemoryCache,为什么我应该有一个全球性的参考,我使用MemoryCache S'

回答

0

因为它要连续记忆。你想在内存碎片之前做到这一点。

我不知道全球。

相关问题