.NET7之MiniAPI(特别篇) :Preview6 缓存和限流

前几在用MiniAPI时还想没有比较优雅的缓存,这不,Preivew6就带来了。使用起来很简单,注入Sevice,引用中间件,然后在Map方法的后面跟CacheOutput()就ok了,CacheOutpu也有不同的参数,可以根据每个方法定制,当然也可以有全局配置,在添加Service时进行统一配置。

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOutputCache();
var app = builder.Build();
app.UseOutputCache();
app.MapGet("/cached", () => DateTime.Now.ToString()).CacheOutput();
app.MapGet("/query", () => DateTime.Now.ToString()).CacheOutput(p => p.VaryByQuery("key").Expire(TimeSpan.FromMinutes(10)));
app.Run();

本次Preview,还优化了限流,引入了TokenBucketLimiter,还优化了RateLimiterOptions中的属性。我们通过一个例子来看一下TokenBucketLimiter.

using Microsoft.AspNetCore.RateLimiting;
using System.Threading.RateLimiting;var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
var limiterName = "MyLimiterName";
//间隔多少时间补发
var options = new RateLimiterOptions().AddTokenBucketLimiter(limiterName, new TokenBucketRateLimiterOptions(1, QueueProcessingOrder.OldestFirst, 1, TimeSpan.FromSeconds(8), 1));app.UseRateLimiter(options);app.MapGet("/limit", () =>
{app.Logger.LogInformation($"limit 开始 {DateTime.Now}");Thread.Sleep(5000);app.Logger.LogInformation($"limit 结束 {DateTime.Now}");return DateTime.Now.ToString();
}).RequireRateLimiting(limiterName);app.Run();

在构建Options时,有一个参数,TimeSpan,它是当等待的请求,与上一个请求开始之间的时间间隔,即等待多长时间开始。看结果,两个请求,红色的是间隔我们设的8s,后台的两个开始也是间隔8s,虽然第一个请求已于3s前返回,但第二个请求还是要等待的。

0060adc4a8b3fa9b82d195c941e03586.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284778.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

曾鸣:未来十年,将确定智能商业的格局|干货

2019独角兽企业重金招聘Python工程师标准>>> 20年来风云变幻,潮起潮涌,我自己最深的一个感受,是对“势”这个字的理解。 第一,敬畏。对于商业规律和对大势的把握,很容易在三五年内决定一个企业的命运。 第二…

Jedis 设置key的超时时间

一分钟之内只能发送一次短信, 若用户刷新页面,然后输入原来的手机号,则继续计时 方案:服务器端要记录时间戳 方法名:sMSWaitingTime 功能:返回倒计时剩余时间,单位秒 Java代码 /*** * 倒计时还剩余多长时间 * param mobile : 手机号 * return : second */…

【QGIS入门实战精品教程】4.1:QGIS栅格数据地理配准完整操作流程

推荐阅读:ArcGIS地理配准完整操作步骤 文章目录 一、安装地理配准插件二、准备实验数据三、配准操作流程1. 添加栅格数据2. 添加地面控制点3. 配准设置4. 开始配准5. 精度评价一、安装地理配准插件 点击下拉菜单【插件】→【管理并安装插件】,如下图所示: QGIS默认已经安装…

聊聊 C++ 中的几种智能指针 (上)

一:背景 我们知道 C 是手工管理内存的分配和释放,对应的操作符就是 new/delete 和 new[] / delete[], 这给了程序员极大的自由度也给了我们极高的门槛,弄不好就得内存泄露,比如下面的代码:void test() {int* i new i…

【Android 学习】深入理解Handler机制

版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/u013132758。 https://blog.csdn.net/u013132758/article/details/51355051 Android 提供了Handler和Looper来来满足线程间的通信,而前面我们所说的IPC指的是进程间的通信。…

【QGIS入门实战精品教程】4.3:QGIS属性表按字段链接外部属性数据

属性数据是GIS空格数据的重要组成部分。属性数据采集的基本操作由于地理实体(如建筑物) 位于地块之内成者与地块有关(如道路),因此,描述地理实体的属性数据和描述地块实体与地理实体之间关系的属性数强大多数都是土地信息的范畴土地空间数据库的属性教据主要是用来描述空间目…

解决 Cmder 的光标跟文字有个间距 及常用配置

具体的方法: 菜单 > SettingStartup > Environment set PATH%ConEmuBaseDir%\Scripts;%PATH% set LANGzh_CN.UTF8 chcp 65001 如果无效:在 Cmder 下的 verndor 目录里,修改 clink.lua 文件大约40和46行,把符号 λ 改为 # …

做一个高德地图的 iOS / Android .NET MAUI 控件系列 - 创建控件

我们知道 MAUI 是开发跨平台应用的解决方案 ,用 C# 可以直接把 iOS , Android , Windows , macOS , Linux ,Tizen 等应用开发出来。那我们在这个框架除了用底层自定义的 UI 控件外,如果我们要用如高德地图这样的第三方控件,要如何做呢&#x…

flask中的session,render_template()第二和参数是字典

1. 设置一个secret_key 2.验证登入后加上session,这是最简单,不保险 . 3.注意render_template传的参数是字典 转载于:https://www.cnblogs.com/cuzz/p/8087844.html

失败记录两则

一,未找出为什么有的CPU应用超高,而另一些CPU静静啥也不干。可能是将JOB的优先级设置低了? 二,给BOSS的三星I9300线刷港版ROM失败。可能文件坏,最可能数据线不是原装?

【QGIS入门实战精品教程】1.1:QGIS与GIS的区别和联系

「刘一哥GIS」系列专栏《QGIS入门实战精品教程(配套案例数据)》目录 1. QGIS概述 QGIS(在2.0版本之前称之为Quantum GIS)于2002年由Gary Sherman创立,在2007年由OSGeo接管,并于2009年发布了1.0版本,目前最高版本为3.22。QGIS采用开源证书GNU GPLv2 (GNU General Public…

简单的对拍

在算法竞赛中,我们常用对拍来初步检验程序。 网上也有其它的关于对拍的教程,但是任性的我还是要自己写一篇教程。  首先,我们要知道我们是用一个叫做” 批处理文件(.bat)“的东西来处理这个问题。点击初步了解bat 不过…

AI 之 OpenCvSharp 大图找小图(案例版)

要说跟AI扯上啥关系,估计只有库本身了,但是,这个大图搜小图功能还是不错的,有喜欢的可以试试。我主要用的场景是,具体的某个界面为大图,界面的某个图标为小图,或者,整个桌面为大图&a…

SaaS应用的十二要素

简介 如今,软件通常会作为一种服务来交付,它们被称为网络应用程序,或软件即服务(SaaS)。12-Factor 为构建如下的 SaaS 应用提供了方法论: 使用标准化流程自动配置,从而使新的开发者花费最少的…

路由器与交换机区别

路由器与交换机区别 近日,在回答知道网友提问的时候,发现很多朋友不知道路由器与交换机的不同,常常问一些看起来有点可笑的问题。比如路由器同时登陆两个账号,所以今天写下这篇经验,科普一下路由器的功能和交换机的功能…

【QGIS入门实战精品教程】1.2:QGIS与ArcGIS的区别和联系

「刘一哥GIS」系列专栏《QGIS入门实战精品教程(配套案例数据)》目录 以下是GISGeography官方给出的两者之间的27点比较(译): 官方网址:https://gisgeography.com/qgis-arcgis-differences/ 1.QGIS容纳更多的数据格式 ArcGIS没有支持所有的数据格式,毫无疑问,QGIS在处…

押注.NET 是件好事

作者 | Bryan Costanich译者 | 明知山策划 | 褚杏娟作为一个在.NET 上构建了不止一个流行平台的人,我经常被问到它的相关性,以及它是不是一个值得投入的生态系统。这个问题在旧金山湾区的技术世界里尤为流行,这里的技术潮流就像四季一样变更交…

8-12 canvas专题-阶段练习一(上)

8-12 canvas专题-阶段练习一&#xff08;上&#xff09; 1 <!DOCTYPE html>2 <html lang"zh-cn">3 <head>4 <meta charset"UTF-8">5 <title>8-12 课堂演示</title>6 </head>7 <style type"text…

【QGIS入门实战精品教程】2.2:QGIS软件的下载与安装(Windows)

文章目录 一、QGIS下载二、QGIS安装​一、QGIS下载 QGIS软件官网下载地址:https://www.qgis.org/en/site/ 进入官网之后,点击【Download Now】进入下载页面: 选择对应的版本进行下载: 开始下载:

Linux sudo找不到命令:修改sudo的PATH路径

为什么80%的码农都做不了架构师&#xff1f;>>> sudo有时候会出现找不到命令&#xff0c;而明明PATH路径下包含该命令&#xff0c;让人疑惑。其实出现这种情况的原因&#xff0c;主要是因为当 sudo以管理权限执行命令的时候&#xff0c;linux将PATH环境变量进行了重…