当前位置: 首页 > news >正文

应用中心海南网站建设优化排名

应用中心,海南网站建设优化排名,网站和app的区别,上海企业服务云下载前言上次#xff0c;我们介绍了应该在业务层实现管道模式响应缓存是ASP.NET Core中很重要的功能#xff0c;它可以存储响应#xff0c;并提供来自缓存的响应#xff0c;以便提高程序性能。响应缓存通常是通过Middleware实现的#xff1a;public static class ResponseCach… 前言上次我们介绍了应该在业务层实现管道模式响应缓存是ASP.NET Core中很重要的功能它可以存储响应并提供来自缓存的响应以便提高程序性能。响应缓存通常是通过Middleware实现的public static class ResponseCachingExtensions {/// summary/// Adds the see crefResponseCachingMiddleware/ for caching HTTP responses./// /summary/// param nameappThe see crefIApplicationBuilder/./parampublic static IApplicationBuilder UseResponseCaching(this IApplicationBuilder app){if (app  null){throw new ArgumentNullException(nameof(app));}return app.UseMiddlewareResponseCachingMiddleware();} }现在我们改成由业务层实现响应缓存。实现1.引用Nuget包新建WebAPI项目引用需要的Nuget包Install-Package MediatR Install-Package MediatR.Extensions.Microsoft.DependencyInjection Install-Package Newtonsoft.Json2.新增接口新增ICacheableQuery接口表示需要缓存public interface ICacheableQuery {TimeSpan? SlidingExpiration { get; } }SlidingExpiration缓存过期时间3.新增缓存管道利用MediatR的IPipelineBehavior功能实现缓存管道public class CachingBehaviorTRequest, TResponse : IPipelineBehaviorTRequest, TResponse where TRequest : ICacheableQuery {private readonly IDistributedCache _cache;public CachingBehavior(IDistributedCache cache){_cache  cache;}public async TaskTResponse Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegateTResponse next){TResponse response;if (request.SlidingExpiration  null){return await next();}var key GetCacheKey(request);var cachedResponse  await _cache.GetAsync(key, cancellationToken);if (cachedResponse ! null){response  JsonConvert.DeserializeObjectTResponse(Encoding.UTF8.GetString(cachedResponse));}else{response  await next();var options  new DistributedCacheEntryOptions { SlidingExpiration  request.SlidingExpiration };var serializedData  Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(response));await _cache.SetAsync(key, serializedData, options, cancellationToken);return response;}return response;} }以TRequest作为缓存Key如果缓存存在则反序列化得到缓存的响应否则执行请求缓存响应。4.使用缓存管道修改WeatherForecastController使用Mediator设置缓存时间为5秒public class WeatherForecastController : ControllerBase {private readonly IMediator _mediator;public WeatherForecastController(IMediator mediator){this._mediator  mediator;}[HttpGet]public async TaskIEnumerableWeatherForecast Get(){return await this._mediator.Send(new GetWeatherForecastQuery());              } }public class GetWeatherForecastQuery : IRequestIEnumerableWeatherForecast, ICacheableQuery {public TimeSpan? SlidingExpiration { get; set; }  TimeSpan.FromSeconds(5); }internal class GetWeatherForecastQueryHandler : IRequestHandlerGetWeatherForecastQuery, IEnumerableWeatherForecast {public async TaskIEnumerableWeatherForecast Handle(GetWeatherForecastQuery request, CancellationToken cancellationToken){await Task.Delay(1000);var rng  new Random();return Enumerable.Range(1, 1).Select(index  new WeatherForecast{ TemperatureC  rng.Next(-20, 55),Summary  Summaries[rng.Next(Summaries.Length)]}).ToArray();} }为了体现效果明显代码里故意加了等待时间。运行程序可以看到第一次请求花了1000多ms而后的请求都很快说明使用了缓存结论在本文中我们学会了使用MediatR实现响应缓存。如果你觉得这篇文章对你有所启发请关注我的个人公众号”My IO“
http://www.huolong8.cn/news/241587/

相关文章:

  • 竹业网站建设旅游网站建设技术有哪些内容
  • 360浏览器打不开90设计网站母婴网站建设方案
  • 工商法律网站建设wordpress电影影视主题公园
  • 做app 的模板下载网站有哪些开网站赚50万做
  • 简述企业网站的基本功能小程序是什么
  • 做网站域名 空间单位网站制作费用报价单
  • 学网站建设去什么学校淘宝联盟微信里做网站
  • 江西网站icp备案注销内容营销怎么做
  • 做的好的农产品网站有哪些头像在线设计生成器
  • 简单漂亮中英文企业网站系统专业的手机网站建设公司哪家好
  • 自学家装设计从哪入手新手怎么做seo优化
  • 做网站前台有什么要求怎样建设美丽中国?
  • 百度推广免费送网站在线生成多款表白网站是怎么做的
  • 商务网站设计方案兰州最好的互联网公司
  • 徐州公司网站制作如何启动wordpress
  • 武威网站建设防封电销系统
  • 右翼网站深圳 营销型网站建设
  • 用axuer 做网站产品原型wordpress页面不要侧边栏
  • 公司网站开发流程深圳公司注册地址新规定
  • 山亭建设局网站知名建站公司
  • 网站开发 项目式说课公司设计网站应遵守哪些常理
  • 社群营销的案例最适合seo的wordpress主题
  • 石河子网站制作推动
  • 网络营销做女鞋的网站设计电商具体是什么工作
  • 郑州网站设计网站小程序店铺怎么开
  • 徐州手机网站设计教育考试类网站建设
  • 南昌企业建站现在做外贸前景如何
  • 建设专业网站所需设备网校平台搭建
  • 营销型网站建设的利与弊wordpress域名修改
  • 做博客网站赚钱吗自己买服务器做网站