本文转载请联系码农阅读公众号。微软的ASP.NETCore已经是非常流行的构建高性能、模块化、运行在Windows、Linux、MacOS上的WEB框架。通常,保持程序高性能的有效方法是通过缓存热链接以上数据来应对高频请求。LazyCache是一个简单易用、线程安全的基于内存的缓存组件。值得注意的是,这里的Lazy指的是LazyCache在缓存未命中时永远不会触发多个缓存委托函数,因为内置了锁,换句话说,Lazy减少了不必要的计算开销。在本文中,我们将讨论如何在ASP.NETCore5.0中使用LazyCache。安装LazyCache要在ASP.NETCoreMVC5中使用LazyCache,您需要安装以下两个nuget包。LazyCacheLazyCache.AspNetCore可以通过Nuget可视化工具安装,也可以通过以下命令安装。PM>Install-PackageLazyCachePM>Install-PackageLazyCache.AspNetCore为什么要缓存?缓存是一种状态管理策略。在web应用中,经常会用到在内存中缓存一些数据,以供后续的请求复用,从而避免了原来不得不去硬盘取数据的尴尬。显然,缓存是提高网络程序性能的一个很好的工具。尽管ASP.NETCore缺少内置的Cache,但它提供了对三种缓存的支持:内存缓存、分布式缓存和响应缓存。为什么使用LazyCacheLazyCache是一个开源的、简单的、线程安全的、可扩展的缓存组件。在底层,LazyCache使用Microsoft.Extensions.Caching下的MemoryCache并使用惰性锁来确保委托只执行一次。如果要缓存从数据库中获取的数据、复杂的对象图和web服务调用,那么使用LazyCache是??一个非常好的选择,通常默认缓存时间为20min。下面简要列出了LazyCache的一些特性。可扩展性开源友好的API接口内置惰性锁底层使用MemoryCache配置LazyCache要配置LazyCache,可以在ConfigureServices()方法中调用AddLazyCache()将LazyCache注入到ServiceContainer中,如下代码所示:voidConfigureServices(IServiceCollectionservices){services.AddLazyCache();services.AddControllers();}这确保LazyCache可以在您的应用程序中运行。访问LazyCache可以使用IAppCache接口,接口定义如下:}voidAdd(stringkey,Titem,MemoryCacheEntryOptionspolicy);TGet(stringkey);TaskGetAsync(stringkey);TGetOrAdd(stringkey,FuncaddItemFactory);TGetOrAdd(stringkey,FuncaddItemFactory,MemoryCacheEntryOptionspolicy);TaskGetOrAddAsync(stringkey,Func>addItemFactory);TaskGetOrAddAsync(字符串键,Func>addItemFactory,MemoryCacheEntryOptionspolicy);voidRemove(stringkey);boolTryGetValue(stringkey,outobjectvalue);}InjectIAppCacheintoController一切配置完成后,就可以通过构造函数注入的方式将IAppCache注入Controller,如下代码所示:[ApiController][Route([controller]")]publicclassWeatherForecastController:ControllerBase{privatereadonlyIAppCache_lazyCache;publicWeatherForecastController(IAppCachecache){this._lazyCache=cache;}}是通过LazyCache添加的,得到的数据认为如下返回GetData()方法的列表privateasyncTask>GetData(){returnnewList(){"JoydipKanjilal","SteveSmith","RickSmith"};}接下来通过GetOrAddAsync方法从缓存中获取或添加数据,如图以下代码:[ApiController][Route([controller]")]publicclassWeatherForecastController:ControllerBase{privatereadonlyIAppCache_lazyCache;publicWeatherForecastController(IAppCachecache){this._lazyCache=cache;}[HttpGet]publicasyncTask>Get(){vardata=Cawait.lazyCache"Authors",GetData,DateTimeOffset.Now.AddMinutes(30));returndata;}privateasyncTask>GetData(){returnnewList(){"JoydipKanjilal","SteveSmith","RickSmith"};如果想在内存中存储更多的数据或者想使用更高级的缓存服务,推荐使用Redis作为分布式缓存,LazyCache🐂👃IAppCache,这意味着您可以轻松地将底层默认的MemoryCache替换为Redis。翻译链接:https://www.infoworld.com/article/?8568/how-to-use-lazycache-in-aspnet-core-mvc-5.html