淘客怎样做网站,设计企业的网站,没有备案的网站百度不收录,wordpress多媒体插件微软的 ASP.NET Core 已经是一个非常流行的用于构建 高性能, 模块化 并能运行在 Windows, Linux, MacOS 上的 WEB 框架#xff0c;通常能够让程序保持高性能的一个有效途径就是通过缓存热链上的数据来应对高频的请求。LazyCache 是一款基于内存的易于使用和线程安全的缓存组件… 微软的 ASP.NET Core 已经是一个非常流行的用于构建 高性能, 模块化 并能运行在 Windows, Linux, MacOS 上的 WEB 框架通常能够让程序保持高性能的一个有效途径就是通过缓存热链上的数据来应对高频的请求。LazyCache 是一款基于内存的易于使用和线程安全的缓存组件值得注意的是这里的 Lazy 指的是 LazyCache 永远不会在 缓存未命中 时触发一次以上的缓存委托函数因为内置了锁换句话说Lazy 减少了不必要的计算开销这篇文章我们将会讨论如何在 ASP.NET Core 5.0 中使用 LazyCache。安装 LazyCache 要想在 ASP.NET Core MVC 5 中使用 LazyCache你需要安装如下两个 nuget 包。LazyCacheLazyCache.AspNetCore你可以通过 Nuget 可视化工具安装或者通过如下命令进行安装。
PM Install-Package LazyCache
PM Install-Package LazyCache.AspNetCore为什么要缓存 缓存是一种 状态管理策略在web应用程序中它常常用来缓存一些数据到内存中供后续请求复用这样就规避了原来不得不走硬盘取数据的尴尬显而易见缓存是提高 web 程序性能的一大利器虽然 ASP.NET Core 缺少内置的 Cache但它提供了对三种缓存类型的支持内存缓存,分布式缓存 和 响应缓存。为什么要使用 LazyCache LazyCache 是一个开源的简单的线程安全的可扩展的 缓存组件在底层LazyCache 使用了 Microsoft.Extensions.Caching 下的 MemoryCache 并使用了 懒锁 来确保 委托 只会执行一次。如果你想缓存从数据库中取得的数据复杂的对象图 和 web服务调用那么使用 LazyCache 是一个非常好的选择通常默认缓存的时间是 20min。下面简单罗列了 LazyCache 的一些特点。可扩展性开源友好的 API 接口内置 lazy 锁底层使用 MemoryCache配置 LazyCache 要想配置 LazyCache可以在 ConfigureServices() 方法中通过调用 AddLazyCache() 将 LazyCache 注入到 ServiceContainer 中如下代码所示public void ConfigureServices(IServiceCollection services){services.AddLazyCache();services.AddControllers();}这样就可以确保 LazyCache 可以贯穿在你的应用程序中要想访问 LazyCache 可以通过 IAppCache 接口定义如下public interface IAppCache{ICacheProvider CacheProvider { get; }CacheDefaults DefaultCachePolicy { get; }void AddT(string key, T item, MemoryCacheEntryOptions policy);T GetT(string key);TaskT GetAsyncT(string key);T GetOrAddT(string key, FuncICacheEntry, T addItemFactory);T GetOrAddT(string key, FuncICacheEntry, T addItemFactory, MemoryCacheEntryOptions policy);TaskT GetOrAddAsyncT(string key, FuncICacheEntry, TaskT addItemFactory);TaskT GetOrAddAsyncT(string key, FuncICacheEntry, TaskT addItemFactory, MemoryCacheEntryOptions policy);void Remove(string key);bool TryGetValueT(string key, out object value);}将 IAppCache 注入到 Controller 中 一切都配置好之后接下来就可以将 IAppCache 通过构造函数注入的方式灌到 Controller 中如下代码所示[ApiController][Route([controller])]public class WeatherForecastController : ControllerBase{private readonly IAppCache _lazyCache;public WeatherForecastController(IAppCache cache){this._lazyCache cache;}}通过 LazyCache 新增,获取数据 考虑如下返回 list 的 GetData() 方法。
private async TaskListstring GetData()
{return new Liststring(){Joydip Kanjilal,Steve Smith,Rick Smith};
}接下来通过 GetOrAddAsync 方法从缓存获取或添加数据如下代码所示[ApiController][Route([controller])]public class WeatherForecastController : ControllerBase{private readonly IAppCache _lazyCache;public WeatherForecastController(IAppCache cache){this._lazyCache cache;}[HttpGet]public async TaskIEnumerablestring Get(){var data await _lazyCache.GetOrAddAsync(Authors, GetData, DateTimeOffset.Now.AddMinutes(30));return data;}private async TaskListstring GetData(){return new Liststring(){Joydip Kanjilal,Steve Smith,Rick Smith};}}如果你想在内存中存储更多的数据或者你想使用档次更高的缓存服务推荐使用 Redis 作为分布式缓存而 LazyCache ????????的地方在于你使用的一直是 IAppCache这就意味着你可以轻松的用 Redis 来替换底层默认的 MemoryCache。译文链接https://www.infoworld.com/article/3608568/how-to-use-lazycache-in-aspnet-core-mvc-5.html