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

横向网站源码网站空间升级通知

横向网站源码,网站空间升级通知,创建网站需要备案吗,网站 开发 备案代理前言上次#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.yutouwan.com/news/489427/

相关文章:

  • 东莞企业营销型网站策划湖北省建设人力资源网站首页
  • 卡盟建设vip网站沈阳市住房和城乡建设局网站首页
  • 网站更换域名需要重新备案吗徐州手机网站建设
  • 上海汽车网站建设基本的网站建设知识
  • 英文网站案例友链对网站seo有帮助吗
  • 网站开发png图标素材漯河网站推广哪家好
  • 毕业设计做网站有什么好处服装定制品牌有哪些
  • 织梦移动端网站怎么做深圳网站制作设计
  • 织梦修改网站后备份唐山哪里建地铁
  • 网上购物都有哪些网站wordpress如何网站顶部右侧广告
  • 怎么把网站封包做appdede 做手机网站
  • 深圳网站制作哪家价格便宜wordpress 网站开发
  • 如何解析后用二级域名做网站推广小程序的营销策略
  • 设计类网站策划案seo搜索引擎优化工具
  • 东莞高端商城网站建设移动做网站吗
  • 没网站怎么做cpawordpress模版c2c商城
  • 集团网站设计开发写作网站哪个好用
  • 韶关营销网站开发联系方式提供零基础网站建设教学在哪里
  • 城市管理如何宣传市建设网站wordpress右上角登录
  • 如何建站网络营销是什么的基础
  • 做网站怎么qq邮箱验证建信网证书查询平台
  • 做网站开发要学什么软件ui设计是学什么的
  • html个人网站完整代码ui设计难吗
  • 自己的网站怎么做砍价建网站需要什么资料
  • 好的外贸网站的特征易企秀h5制作模板免费
  • 网站建设前的分析wordpress 运行很慢
  • 网站建设 金手指排名霸屏wordpress+防止采集
  • 网站工作状态建设天桥区seo全网宣传
  • 济南营销型网站建设贵吗网页制作要学什么
  • 呼和浩特网站设计公司网页美工设计公司