MemoryCache SetSize,是否限制缓存条目大小

问题描述 投票:0回答:1

我计划在我的 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) 的内容,那么不会缓存或抛出异常,因为它大于允许的限度吗?

c# asp.net asp.net-web-api
1个回答
0
投票

所以它的工作原理与您的预期略有不同:

MS

IMemoryCache
文档中所述,没有测量单位来处理缓存大小。因此,开发人员(您)负责处理所有这些。

所以为了限制缓存的大小,你需要在注册阶段定义它:

builder.Services.AddMemoryCache(setup => setup.SizeLimit = 100);

您注意到了:

SetSize
方法 - 它仅将大小分配给条目,告诉缓存它占用了多少“空间”。

如果您要添加限制大小的缓存,如果大小不受限制,

Set
方法不会抛出异常,则不会添加该条目。

© www.soinside.com 2019 - 2024. All rights reserved.