我计划在我的 asp.net webapi 项目中使用 MemoryCache。 我找到的示例使用以下内容:
var cacheEntryOptions = new MemoryCacheEntryOptions()
.SetSlidingExpiration(TimeSpan.FromSeconds(600))
.SetAbsoluteExpiration(TimeSpan.FromSeconds(3600))
.SetPriority(CacheItemPriority.Normal)
.SetSize(1024);
_cache.Set(myKey, myData, cacheEntryOptions);
我不确定 SetSize 到底做了什么,这是否限制了上述缓存条目的最大大小? 单位是kB、mB吗? 例如,我们要缓存的调用之一在 chrome 开发工具中显示为返回大小为 3.3kB 的数据,如果我添加超出上述限制 (1024) 的内容,那么不会缓存或抛出异常,因为它大于允许的限度吗?
所以它的工作原理与您的预期略有不同:
如MS
IMemoryCache
文档中所述,没有测量单位来处理缓存大小。因此,开发人员(您)负责处理所有这些。
所以为了限制缓存的大小,你需要在注册阶段定义它:
builder.Services.AddMemoryCache(setup => setup.SizeLimit = 100);
您注意到了:
SetSize
方法 - 它仅将大小分配给条目,告诉缓存它占用了多少“空间”。
如果您要添加限制大小的缓存,如果大小不受限制,
Set
方法不会抛出异常,则不会添加该条目。