.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.pswp.cn/news/284778.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284778.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284778.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

藍橋杯C1

轉一篇寫的炒雞棒的博客。講了表達式求值和詞法分析。 http://blog.csdn.net/StevenKyleLee/article/details/43099789 轉載于:https://www.cnblogs.com/wangkaipeng/p/6343204.html

曾鳴:未來十年,將確定智能商業的格局|干貨

2019獨角獸企業重金招聘Python工程師標準>>> 20年來風云變幻,潮起潮涌,我自己最深的一個感受,是對“勢”這個字的理解。 第一,敬畏。對于商業規律和對大勢的把握,很容易在三五年內決定一個企業的命運。 第二…

Jedis 設置key的超時時間

一分鐘之內只能發送一次短信, 若用戶刷新頁面,然后輸入原來的手機號,則繼續計時 方案:服務器端要記錄時間戳 方法名:sMSWaitingTime 功能:返回倒計時剩余時間,單位秒 Java代碼 /*** * 倒計時還剩余多長時間 * param mobile : 手機號 * return : second */…

[轉]IIS7全新管理工具AppCmd.exe的命令使用

IIS 7 提供了一個新的命令行工具 Appcmd.exe,可以使用該工具來配置和查詢 Web 服務器上的對象,并以文本或 XML 格式返回輸出。 下面是一些可以使用 Appcmd.exe 完成的任務的示例: ?創建和配置站點、應用程序、應用程序池和虛擬目錄。 ?停止…

【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指的是進程間的通信。…

第五天個人總結

1.昨天做了什么 頁面完善 2.今天要做什么 暫未知轉載于:https://www.cnblogs.com/sunshine-z/p/8298895.html

【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行,把符號 λ 改為 # …

32 commons-lang包學習

maven依賴 <dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency>一、DateUtils類1、日期比較 public static boolean isSameDay(Date date1, Date date2)&…

做一個高德地圖的 iOS / Android .NET MAUI 控件系列 - 創建控件

我們知道 MAUI 是開發跨平臺應用的解決方案 &#xff0c;用 C# 可以直接把 iOS , Android , Windows , macOS , Linux ,Tizen 等應用開發出來。那我們在這個框架除了用底層自定義的 UI 控件外&#xff0c;如果我們要用如高德地圖這樣的第三方控件&#xff0c;要如何做呢&#x…

flask中的session,render_template()第二和參數是字典

1. 設置一個secret_key 2.驗證登入后加上session,這是最簡單,不保險 . 3.注意render_template傳的參數是字典 轉載于:https://www.cnblogs.com/cuzz/p/8087844.html

統一設置網站html文件輸出編碼為utf-8,以解決亂碼問題

如果設置整站&#xff0c;就在根目錄web.config設置如下參數&#xff0c;如果是指定目錄&#xff0c;在該目錄下的web.config文件設置如下參數&#xff0c;如果沒有web.config文件&#xff0c;可以直接新建一個&#xff1a; <?xml version"1.0" encoding"…

失敗記錄兩則

一&#xff0c;未找出為什么有的CPU應用超高&#xff0c;而另一些CPU靜靜啥也不干。可能是將JOB的優先級設置低了&#xff1f; 二&#xff0c;給BOSS的三星I9300線刷港版ROM失敗。可能文件壞&#xff0c;最可能數據線不是原裝&#xff1f;

【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…

簡單的對拍

在算法競賽中&#xff0c;我們常用對拍來初步檢驗程序。 網上也有其它的關于對拍的教程&#xff0c;但是任性的我還是要自己寫一篇教程。  首先&#xff0c;我們要知道我們是用一個叫做” 批處理文件&#xff08;.bat&#xff09;“的東西來處理這個問題。點擊初步了解bat 不過…

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

要說跟AI扯上啥關系&#xff0c;估計只有庫本身了&#xff0c;但是&#xff0c;這個大圖搜小圖功能還是不錯的&#xff0c;有喜歡的可以試試。我主要用的場景是&#xff0c;具體的某個界面為大圖&#xff0c;界面的某個圖標為小圖&#xff0c;或者&#xff0c;整個桌面為大圖&a…

SaaS應用的十二要素

簡介 如今&#xff0c;軟件通常會作為一種服務來交付&#xff0c;它們被稱為網絡應用程序&#xff0c;或軟件即服務&#xff08;SaaS&#xff09;。12-Factor 為構建如下的 SaaS 應用提供了方法論&#xff1a; 使用標準化流程自動配置&#xff0c;從而使新的開發者花費最少的…

對話Linus:Linux 25歲啦

作為芬蘭Helsinki大學計算機科學系的學生&#xff0c;Linus Torvalds在1991年編寫了Linux操作系統的原始內核。很快&#xff0c;Linux就發展成為了一個全特征的操作系統&#xff0c;并開始運行在智能手機、服務器和各種設備中。在本次通過e-mail進行的訪談中&#xff0c;Torval…