常州做网站企业,某俄文网站,邯郸网站建设哪家强,cms开发MSCache项目MSCache 目前最新的正式版是 2.0.0#xff0c;预览版是2.1.0#xff0c;会与 .NETCore 2.1 一起发布。本篇用了2.0.0版本开源在 GitHub 上#xff0c;仓库地址是#xff1a;https://github.com/aspnet/CachingNuGet地址为#xff1a;https://www.nuget.org/pac… MSCache项目MSCache 目前最新的正式版是 2.0.0预览版是2.1.0会与 .NETCore 2.1 一起发布。本篇用了2.0.0版本开源在 GitHub 上仓库地址是https://github.com/aspnet/CachingNuGet地址为https://www.nuget.org/packages/Microsoft.Extensions.Caching.Memory/2.0.0缓存域我们来假设一个场景。有下面四个成员书籍模型包含一个组章节模型章节模型书籍服务章节服务BookService 有一个获取书籍的方法ChapterService 有一个获取书籍章节的方法可以看到 GetBook 内使用了缓存缓存了5秒钟。GetBook 又调用了 ChapterService 的 GetChaptersGetChapters 缓存了3秒钟。这时候书籍的章节信息缓存要早于书籍过期。那么大家试想一下如果章节信息先过期了 GetBook 这个方法返回的是不是还是旧的数据在一些简单的缓存设计中是这样的但在 MSCache 中微软提供了缓存域的概念从层级上 Chapter 的父级缓存是 Book。所以当 Chapter 过期时Book 也会级联过期。我们来看一下测试。可以看到每隔三秒钟不仅 Chapter 重新获取Book 也会一起级联获取。这样在很大程度上减轻了我们处理缓存依赖的问题。ChaneToken在域中SlidingExpiration在域中画重点恩输出是 时间时间新时间。其实呢子缓存项并没有过期。这是为什么呢我翻了 Caching 的源码发现缓存失效扩散的处理中并没有对 SlidingExpiration 进行处理只处理了 ExpirationTokens 和 AbsoluteExpiration。不知道这是不是一个bug我已经在 MSCache 项目上提了一个issue等待回复后再来更新这块的说明。这块的处理代码如下逻辑很简单把自身的过期 token 和 绝对过期时间 设置在父缓存项上。也就是说你在父缓存中设计的绝对到期时间会被改写成到期缓存域中最小的到期时间。写在最后MSCache 真的非常像 Orchard 中的 Caching有兴趣的同学可以去了解一些 Orchard 中的 Caching 设计。至 此 MSCache 中的 MemoryCache 机制和功能就基本介绍完了。后续会继续介绍 MSCache 中的 DistributedCache分布式缓存和一些 MSCache 的使用技巧。.NET技术栈QQ群384413261相关文章拥抱.NET Core系列依赖注入1拥抱.NET Core系列依赖注入2拥抱.NET Core系列MemoryCache 初识拥抱.NET Core系列MemoryCache 缓存过期拥抱.NET Core系列MemoryCache 缓存选项原文http://www.cnblogs.com/ants/p/8533074.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com