【发布时间】:2015-01-03 11:24:08
【问题描述】:
根据 MSDN 文档here:
除非需要,否则不要创建 MemoryCache 实例。如果你 在客户端和 Web 应用程序中创建缓存实例 MemoryCache 应在应用程序生命周期的早期创建实例。你 必须只创建将用于的缓存实例数量 您的应用程序,并将对缓存实例的引用存储在 可以全局访问的变量。例如,在 ASP.NET 应用程序,您可以将引用存储在应用程序状态中。如果 您在应用程序中只创建一个缓存实例,使用 默认缓存并从 Default 属性中获取对它的引用 你需要访问缓存。
它并没有完全解释这背后的原因,还有其他几个关于清除MemoryCache 的问题,但似乎还没有得出一个可靠的结论。正如我所收集的,我的选择是处置MemoryCache 并创建一个新实例,根据上述文档不建议这样做,或者使用枚举器,由于性能问题也不建议这样做。 Trim() 已被证明是不可靠的,所以我正在调查为什么在我的应用程序生命周期中间实例化 MemoryCache 被认为是一个坏主意。
为了深入了解我为什么好奇,这里的主要问题是我希望我的MemoryCache 仅适用于一系列方法调用的范围。这些方法调用是跨同一对象的不同实例进行的,它们共享通过数据库检索到的数据,尽管不太可能,但可能会在我分配给到期窗口的几秒钟内发生变化。我的想法是每当我开始一系列方法调用时创建一个新的MemoryCache 实例,以确保我拥有最新的数据,同时不会为每个实例多次访问数据库。但是,MSDN 也建议不要创建新实例,并建议将所有实例都放在全局变量中。
简而言之,为什么建议在应用程序生命周期开始时实例化MemoryCache,为什么我要对我使用的MemoryCaches 进行全局引用? p>
【问题讨论】:
标签: c# .net caching memorycache