Caching 缓存对象-.NET核心

Caching 缓存对象-.NET核心,caching,asp.net-core,Caching,Asp.net Core,使用VS 2017、.NET Core 1.1。JSON调用 似乎缓存周围有很多库;例如,等等 对于我的项目,我喜欢不经常更改的对象;例如,国家、州等。让静态IEnumerable表示。。。国家?是的,刷新静态对象会变得有点麻烦,必须有一个控制器使对象为null,并在下一个请求中重新填充它(Lazy init)。例如,假设Cache类可以在下午6:00将所有静态变量设为null。这是一种较老的方法,但似乎仍然是一种很好的方法。有什么真正的缺点吗?是的,99.99%的情况下,静态缓存是错误的/不好

使用VS 2017、.NET Core 1.1。JSON调用

似乎缓存周围有很多库;例如,等等


对于我的项目,我喜欢不经常更改的对象;例如,国家、州等。让静态IEnumerable表示。。。国家?是的,刷新静态对象会变得有点麻烦,必须有一个控制器使对象为null,并在下一个请求中重新填充它(Lazy init)。例如,假设Cache类可以在下午6:00将所有静态变量设为null。这是一种较老的方法,但似乎仍然是一种很好的方法。有什么真正的缺点吗?

是的,99.99%的情况下,
静态
缓存是错误的/不好的。谢谢你的评论,你能简单地解释一下原因吗?它是记忆的东西吗?数据损坏?如果列表更改,是否需要更多维护?线程问题?很多事情。代码气味、错误做法、线程问题(即当多个请求在其值被更改之间访问它时)、可能泄漏内存(永远保留对对象的引用)、难以进行单元测试、隐藏依赖项。为什么不直接注入
IMemoryCache
,它默认在ASP.NET核心iirc中注册,并且当使用
IDistributedCache
时,它可以在内存中用于开发,在Redis中用于生产是的,
static
缓存在99.99%的情况下是错误的/不好的谢谢你的评论,你能简单地解释一下原因吗?它是记忆的东西吗?数据损坏?如果列表更改,是否需要更多维护?线程问题?很多事情。代码气味、错误做法、线程问题(即当多个请求在其值被更改之间访问它时)、可能泄漏内存(永远保留对对象的引用)、难以进行单元测试、隐藏依赖项。为什么不直接注入
IMemoryCache
,它默认在ASP.NET Core iirc中注册,并且在使用
IDistributedCache
时可以在内存中进行开发,在Redis中进行生产