我使用MemoryCache类创建了一个缓存.我添加了一些项目,但是当我需要重新加载缓存时,我想首先清除它.最快的方法是什么?我应该遍历所有项目并一次删除一个项目还是有更好的方法?
我使用a System.Runtime.Caching.MemoryCache来保存永不过期的物品.但是,有时我需要能够清除整个缓存.我怎么做?
我在这里问了一个类似的问题,我是否可以枚举缓存,但这是一个坏主意,因为它需要在枚举期间进行同步.
我尝试过使用.Trim(100)但根本不起作用.
我已经尝试通过Linq获取所有密钥的列表,但后来我回到了我开始的地方,因为一个接一个地逐出项目很容易导致竞争条件.
我想存储所有的密钥,然后.Remove(key)为每个密钥发出一个,但是那里也有一个隐含的竞争条件,所以我需要锁定对密钥列表的访问,然后事情再次变得混乱.
然后我认为我应该可以调用.Dispose()整个缓存,但我不确定这是否是最佳方法,因为它的实现方式.
使用ChangeMonitors不是我的设计的选项,并且对于这样一个微不足道的要求是不必要的.
那么,我该如何彻底清除缓存呢?
我可以找到一种remove方法来IMemoryCache从其键中删除对象.有没有办法重置整个缓存并删除所有对象?
编辑:
如何清除MemoryCache?
链接中提供的Dispose方法在asp.net 5中给出了一个例外.ObjectDisposedException: Cannot access a disposed object.
Object name: 'Microsoft.Extensions.Caching.Memory.MemoryCache'.
我们有一个使用 .NET Framework 4.6 的 ASP.NET 网站,我们使用 Rider 和 Visual Studio 来处理它。
每隔一段时间,我就会发现有人获取旧的 razor 文件,但仍然尝试查找不再存在的函数/引用。据我了解,这些 razor 文件已被缓存,我们需要清除缓存。
所以,我们通常会进行以下步骤
这些步骤的某些组合通常适用于大多数人,但当它不起作用时,我们必须手动转到每个 razor 文件(抱怨错误)并添加一个空格并保存它以强制清除缓存。有时是单个文件或 2 个文件,但有时是 10 个文件。
因此,想知道每当我们再次发现此问题时清除剃刀文件缓存的正确/推荐方法是什么。