بهینهسازی API ها در ASP.NET Core MVC با استفاده از Rate Limiting و Response Compression
Rate Limiting (محدودسازی نرخ درخواستها)
هدف:
- جلوگیری از ارسال بیشازحد درخواستها به API توسط کاربران یا باتها که میتواند باعث فشار بر سرور یا سوءاستفاده شود.
نصب پکیج:
از نسخه .NET 7 به بعد، Rate Limiting به صورت Built-in در ASP.NET Core اضافه شده است. اما اگر از نسخه پایینتری استفاده میکنید، میتوانید از پکیجهای جانبی مانند AspNetCoreRateLimit استفاده کنید.
برای .NET 7+:
dotnet add package Microsoft.AspNetCore.RateLimiting
پیکربندی در Program.cs:
using Microsoft.AspNetCore.RateLimiting;
using System.Threading.RateLimiting;
var builder = WebApplication.CreateBuilder(args);
// تعریف محدودیت سراسری
builder.Services.AddRateLimiter(options =>
{
options.GlobalLimiter = PartitionedRateLimiter.Create(httpContext =>
RateLimitPartition.GetFixedWindowLimiter(
partitionKey: httpContext.Connection.RemoteIpAddress?.ToString() ?? "unknown",
factory: _ => new FixedWindowRateLimiterOptions
{
PermitLimit = 5,
Window = TimeSpan.FromSeconds(10),
QueueProcessingOrder = QueueProcessingOrder.OldestFirst,
QueueLimit = 2
}));
options.RejectionStatusCode = StatusCodes.Status429TooManyRequests;
});
var app = builder.Build();
app.UseRateLimiter();
app.MapControllers();
app.Run();
نکته:
شما میتوانید محدودیت را بر اساس IP، کاربر، یا مسیر API تنظیم کنید.
2. Response Compression (فشردهسازی پاسخها)
هدف:
- کاهش حجم دادههای ارسال شده از سرور به کلاینت و در نتیجه افزایش سرعت بارگذاری APIها.
نصب پکیج (اگر لازم باشد):
در اکثر نسخههای جدید نیازی به نصب جداگانه نیست، اما اگر نبود، نصب کنید:
dotnet add package Microsoft.AspNetCore.ResponseCompression
پیکربندی در Program.cs:
builder.Services.AddResponseCompression(options =>
{
options.EnableForHttps = true;
options.Providers.Add();
});
builder.Services.Configure(options =>
{
options.Level = System.IO.Compression.CompressionLevel.Fastest;
});
var app = builder.Build();
app.UseResponseCompression();
app.MapControllers();
app.Run();
نتیجه:
پاسخهای API مانند JSON، XML و حتی HTML به صورت GZIP فشرده میشوند و حجم آنها بهشدت کاهش مییابد.
ترکیب Rate Limiting و Compression: عملکردی سریع، امن و پایدار
با ترکیب این دو تکنیک در کنار سایر ابزارهای بهینهسازی مانند کش (Caching) و لاگگیری هوشمند (Logging)، میتوان APIهایی پایدارتر و مقیاسپذیرتر ایجاد کرد. این امر خصوصاً در پروژههای تجاری با ترافیک بالا بسیار حائز اهمیت است.
builder.Services.AddResponseCompression(options =>
{
options.EnableForHttps = true;
options.Providers.Add();
});
builder.Services.Configure(options =>
{
options.Level = System.IO.Compression.CompressionLevel.Fastest;
});
var app = builder.Build();
app.UseResponseCompression();
app.MapControllers();
app.Run();
نتیجهگیری
تکنیک | مزایا |
---|---|
Rate Limiting | جلوگیری از سوءاستفاده، کنترل ترافیک، کاهش بار سرور |
Response Compression | افزایش سرعت بارگذاری، کاهش مصرف پهنای باند، تجربه کاربری بهتر |
استفاده هوشمندانه از این ابزارها در پروژههای ASP.NET Core MVC، گامی مؤثر در جهت بهینهسازی حرفهای APIها خواهد بود.
0 نظر
هنوز نظری برای این مقاله ثبت نشده است.