Pet*_*rks 19 c# asp.net caching .net-4.0
我正在使用提供的缓存System.Runtime.Caching.MemoryCache.
我想枚举缓存的项目,以便我可以无效(逐出然后重新加载)项目
foreach (var item in MemoryCache.Default) { item.invalidate() }
Run Code Online (Sandbox Code Playgroud)
但这里发现的官方文件说:
!重要:检索MemoryCache实例的枚举器是一项资源密集型和阻塞操作.因此,不应在生产应用程序中使用枚举器.
当然必须有一种简单有效的方法来迭代缓存的项目?
Pet*_*rks 10
到目前为止提出的建议很棒,但我仍然需要说明:迭代缓存的项目.这似乎是一个如此简单的任务,我希望缓存内部还有某种列表结构.文档和功能集MemoryCache是缺乏的.
因此,如上所述,我已经向我的缓存适配器类添加了一个列表,该类包含对我放在缓存中的每个项目的引用.如果我需要迭代缓存 - 不仅仅是为了失效,而是为了收集统计数据等 - 然后我迭代我的列表.
如果放置在缓存中的项目数没有变化,那么这是一个合理的解决方案.如果数字确实发生了变化,那么您需要通过适配器类插入/删除,以便使列表与实际缓存保持同步.凌乱,但它有效,并避免在文档中提到的性能罚款.
希望MemoryCache缓存提供商将在下一个平台版本中充实.
| 归档时间: |
|
| 查看次数: |
11018 次 |
| 最近记录: |