a83c

Output Caching در ASP.NET Core 8.0

لینک کوتاه https://codecell.ir/a/a83c
به اشتراک گذاری
نویسنده:
0
0
0
مقالات پیشنهادی:
آموزش های نویسنده:
Output Caching در ASP.NET Core 8.0

Output Caching یک ویژگی جدید است که از زمان .NET 7 معرفی شده است. این ویژگی به ما این امکان را می دهد که به راحتی یک کش پاسخ برای Web API خود بدون پیاده سازی IMemoryCache راه اندازی کنیم.
در این مقاله نحوه پیاده سازی و استفاده از Output Caching در ASP.NET Core 8 را بررسی می کنیم.

می توانید ویدیو بررسی و پیاده سازی Output Caching در ASP.NET Core 8 را در یوتیوب کدسل مشاهده کنید.

Output Caching چیست؟

Output Caching تکنیکی است که می‌توانیم آن را در ASP.NET Core برای کش کردن داده‌هایی که اغلب به آنها دسترسی پیدا می‌کنید، عمدتاً برای بهبود عملکرد اعمال کنیم. با جلوگیری از call های بیش از حد به وابستگی‌های شدید منابع (مثلاً یک پایگاه داده یا تماس شبکه)، می‌توانیم زمان پاسخگویی برنامه‌مان را که یکی از کلیدهای اصلی مقیاس‌سازی برنامه‌ها است، به طرز چشمگیری بهبود ببخشیم.

تفاوت بین Output Caching و Response Caching

قبل از اینکه به نحوه عملکرد Output Caching خروجی بپردازیم، بیایید تفاوت های اصلی بین Output Caching و Response Caching را بررسی کنیم:

Responsibility: response caching، مسئولیت کش را به مشتریان (یا سرورهای پروکسی واسطه) با تنظیم هدرهای کش منتقل می کند. Output Caching مسئولیت را بر عهده سرور (یا مجموعه ای از سرورها) می گذارد.

محیط ذخیره سازی: response caching در memory ذخیره می شود، در حالی که output caching گزینه های مختلفی برای سفارشی کردن فضای ذخیره سازی دارد.

Eviction: از آنجایی که ما output caching را در سرور کنترل می کنیم، گزینه هایی برای حذف این ورودی های کش داریم. با این حال این مورد در Response caching بسیار دشوار است، زیرا ما کنترل نمی کنیم که کلاینت ها چگونه می توانند رفتار کنند.

اعتبار سنجی مجدد: output caching می تواند یک کد پاسخ 304 Not Modified را به جای بدنه پاسخ کش شده برگرداند. این موضوع می تواند در پهنای باند صرفه جویی کند.

این تفاوت ها یکی را بهتر از دیگری نمی کند، زیرا هر کدام موارد استفاده متفاوتی دارند.

پیکربندی Output Caching در NET8

ابتدا باید OutputCache را به کانتینر سرویس در فایل Program.cs اضافه کنیم:

builder.Services.AddOutputCache();

بعد، باید میان افزار OutputCache را نیز اضافه کنیم:

app.UseOutputCache();

فایل کامل Program.cs در زیر آمده است:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOutputCache();
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}
app.UseOutputCache();
app.MapControllers();
app.Run();

پیاده سازی Output Caching در NET8

برای فعال کردن کش خروجی، می‌توانیم action method را با ویژگی [OutputCache] تزئین کنیم:

[HttpGet]
[OutputCache]
public async Task<IActionResult> Get(CancellationToken ct)
{
    // ...
}

به طور پیش فرض، مدت زمان کش 60 ثانیه است. برای سفارشی کردن مدت زمان کش، می‌توانیم ویژگی Duration را تنظیم کنیم:

[HttpGet]
[OutputCache(Duration = 10)] // 10 seconds cache duration
public async Task<IActionResult> Get(CancellationToken ct)
{
    // ...
}

کد بالا مدت زمان کش را روی 10 ثانیه تنظیم می کند.

اگر در عرض 10 ثانیه دوباره به اندپوینت برسیم، به جای اجرای مجدد منطق، پاسخ کش شده را بر میگرداند.

سفارشی سازی زمان انقضای پیش فرض

می‌توانیم زمان انقضای کش پیش ‌فرض را با تنظیم ویژگی DefaultExpirationTimeSpan تغییر دهیم:

builder.Services.AddOutputCache(opt =>
{
    opt.DefaultExpirationTimeSpan = TimeSpan.FromSeconds(30);
});

نحوه تعریف Policy برای Output Caching

ما همچنین می توانیم یک Policy برای سفارشی سازی output caching ایجاد کنیم. برای مثال، می‌خواهیم کش را برای اندپوینت master data را روی 10 ثانیه تنظیم کنیم در حالی که کش برای اندپوینت reports روی 60 ثانیه است.

builder.Services.AddOutputCache(opt =>
{
    opt.DefaultExpirationTimeSpan = TimeSpan.FromSeconds(30);
    opt.AddPolicy("MasterData", builder => builder.Expire(TimeSpan.FromSeconds(10)));
    opt.AddPolicy("Reports", builder => builder.Expire(TimeSpan.FromSeconds(60)));
});

برای استفاده از این Policy، می توانیم ویژگی PolicyName را در ویژگی OutputCache تنظیم کنیم:

[HttpGet]
[OutputCache(PolicyName = "Reports")]
public async Task<IActionResult> Get(int year, int month, CancellationToken ct)
{
    // ...
}

[HttpGet]
[OutputCache(PolicyName = "MasterData")]
public async Task<IActionResult> Get(CancellationToken ct)
{
    // ...
}

نتیجه گیری

در این مقاله به نحوه راه اندازی OutputCache در ASP.NET پرداختیم. برای اکثر سناریوهای خود می توانیم از پیش‌فرض‌ها، از جمله استفاده از memory cache به عنوان storage پیش‌فرض، استفاده کنیم. با این حال، همانطور که سرورهای خود را بزرگ می کنیم، این کمتر ایده آل می شود. برای این موارد، گزینه های بهتری از جمله انتخاب ابزاری مانند Redis وجود دارد. این به ما این امکان را می دهد که از مزایای عملکرد کش در حین آزاد کردن منابع حافظه در سرورهای خود استفاده کنیم. 

به یاد داشته باشید که Output Caching با Response Caching بسیار متفاوت است. در Output Caching، بیشتر تلاش ما روی سرور است، اطمینان حاصل می کنیم که آیتم ها بر اساس گزینه های مختلف ذخیره می شوند و در صورت نیاز، از حافظه کش خارج می شوند. این کنترل سمت سرور در قلب Output Caching قرار دارد و کلاینت ها حداقل کنترل را دارند. در مقابل، Response Caching به این موضوع می‌پردازد که چگونه به کلاینت‌ها دستور دهید تا کش کنند، زیرا سرور اصلاً حالتی ندارد. در حالت ایده آل، ما باید هر دو تکنیک را ترکیب کنیم تا یک برنامه کاربردی خوب داشته باشیم.

دیگر مقالات آموزش برنامه نویسی مدرس

Response Caching در ASP.NET Core

Response Caching یک مکانیزم ذخیره سازی پاسخ سرور توسط مرورگر یا سایر کلاینت ها است. با استفاده از Response Caching در Asp.net Core می توانیم عملکرد و کارایی سیستم را بالا ببریم.

671 0 1402/10/22

الگوی طراحی زنجیره مسئولیت در سی شارپ

الگوی زنجیره مسئولیت یا Chain of Responsibility Design Pattern یک الگوی طراحی رفتاری(behavioral design pattern) است که اجازه می‌دهد یک درخواست در امتداد زنجیره‌ای از کنترل‌کننده‌های بالقوه ارسال شود تا زمانی که درخواست مناسب برای پردازش آن را پیدا کند.

686 2 1402/10/01

ViewComponent در ASP.NET Core

در ASP.NET Core با استفاده از ViewComponent ها می توان اجزای ماژولار، قابل استفاده مجدد، قابل نگهداری و مقیاس پذیر برای ساخت برنامه های کاربردی وب ایجاد کرد. در این مقاله به نحوه ایجاد و فراخوانی ViewComponent در Asp.net core پرداخته ایم.

1٬432 2 1402/05/15

تطبیق الگو در NET 7: ساده سازی تجزیه و تحلیل داده ها

تطبیق الگو یا Pattern Matching در net7 یک تکنیک قدرتمند برای تجزیه و تحلیل و دستکاری داده ها بر اساس ساختار آن ها است. تطبیق الگو یا Pattern Matching به توسعه دهندگان اجازه می دهد تا مقادیر را با یک الگوی خاص مطابقت دهند و اقدامات مربوطه را انجام دهند.

882 1 1402/04/05

تزریق وابستگی در ASP.NET Core

تزریق وابستگی (DI) یک الگوی طراحی نرم افزاری است که امکان ایجاد برنامه های کاربردی و ماژولار را فراهم می کند.. در .NET Core تزریق وابستگی یا Dependency injection یک ویژگی مهم است که می تواند برای ساده سازی توسعه برنامه، بهبود تست پذیری و کاهش پیچیدگی کد مورد استفاده قرار گیرد.

1٬965 1 1402/02/04

ضروری ترین کتابخانه های NuGet برای ASP.NET Core

در این مقاله مهمترین،ضروری ترین و پرکاربردترین کتابخانه های NuGet که هر توسعه‌ دهنده‌ ASP.NET Core باید برای توسعه بهتر و کاهش زمان مورد نیاز برای برنامه ‌های خود از آن استفاده کنند را مورد بررسی قرار داده ایم.

1٬518 1 1401/12/29

الگوی طراحی Factory در سی شارپ

الگوهای طراحی یکی از مهمترین جنبه های طراحی و معماری نرم افزار است. Factory Method یک الگوی طراحی ایجادی است که یک رابط برای ایجاد اشیاء در یک سوپر کلاس فراهم می‌کند. ما در این مقاله الگوی Factory Method Design در سی شارپ را بررسی می کنیم.

1٬644 1 1401/10/28

مقایسه List و Array در سی شارپ

آرایه و لیست در سی شارپ هر دو به عنوان مجموعه ای از مقادیر عمل می کنند، اما در نحوه ذخیره محتوای خود در حافظه و نحوه دسترسی به آنها متفاوت هستند. در این مقاله Benchmark و کارایی List<T> با سایز داینامیک، List<T> با سایز ثابت و Array ها را بررسی می کنیم.

2٬222 2 1401/09/01

LinkedList در سی شارپ

LinkedList یا لیست پیوندی در سی شارپ یک ساختار داده خطی است که عنصر را در مکان غیر پیوسته ذخیره می کند. LinkedList شامل گره هایی است که هر گره حاوی یک فیلد داده و یک مرجع (پیوند) به گره بعدی در لیست است. در سی شارپ، LinkedList یا لیست پیوندی یک نوع مجموعه جنریک است.

2٬049 0 1401/08/13

Garbage Collection در دات نت

به طور کلی، Garbage Collection (GC) یا جمع آوری زباله در .Net چیزی نیست جز به دست آوردن مجدد حافظه اختصاص داده شده به اشیایی که در حال حاضر در هیچ بخشی از برنامه ما استفاده نمی شوند. ما در این مقاله Garbage Collection را در سی شارپ بررسی خواهیم کرد.

2٬840 5 1401/03/30

.NET Core چیست؟

.Net (با تلفظ «دات نت») یک چارچوب نرم افزاری کامپیوتری مدیریت شده رایگان و منبع باز برای سیستم عامل های ویندوز، لینوکس و macOS است. این پروژه در درجه اول توسط کارمندان مایکروسافت از طریق دات نت توسعه یافته و تحت مجوز MIT منتشر شده است.

2٬589 2 1401/03/16

پشته(Stack) در سی شارپ

پشته یا Stack در سی شارپ یک نوع خطی از ساختار داده است که قادر به ذخیره اشیاء است. پشته یک ساختار داده LIFO یا Last-In-First-Out است، به این معنی که آخرین موردی که در پشته قرار می گیرد اولین موردی است که از پشته خارج می شود.

2٬189 0 1401/03/09

صف (Queue) در سی شارپ

صف (Queue) در سی شارپ یک نوع خطی از ساختار داده است که قادر به ذخیره اشیاء است. Queue یک ساختار داده first-in-first-out یا FIFO است که به این معنی است که اولین مورد اضافه شده به صف اولین موردی است که حذف می شود.

2٬164 0 1401/02/30

تفاوت Hashtable و Dictionary در سی شارپ

در سی شارپ از Hashtable و Dictionary می توان برای ذخیره مجموعه‌ای از داده‌ها، شبیه به List معمولی استفاده کرد. با این تفاوت که Hashtable و Dictionary عناصر را به عنوان جفت Key/Value ذخیره می کنند.در این مقاله به تفاوت های Hashtable و Dictionary پرداخته شده است.

1٬843 1 1401/02/23

Dictionary در سی شارپ

در سی شارپ از دیکشنری ها (Dictionary) می‌توان برای ذخیره مجموعه‌ای از داده‌ها، شبیه به List معمولی استفاده کرد. تفاوت اصلی این است که یک Dictionary می تواند عناصر را به عنوان جفت Key/Value ذخیره کند.Key ها باید منحصر به فرد و نمی توانند null باشند. Value ها می توانند تکراری یا null باشند.

2٬249 3 1401/02/17

Hashtable در سی شارپ

از Hashtable می‌توان برای ذخیره مجموعه‌ای از داده‌ها، شبیه به List معمولی استفاده کرد. تفاوت اصلی این است که یک Hashtable می تواند عناصر را به عنوان جفت Key/Value به عنوان جایگزینی برای استفاده از Index ذخیره کند.

1٬721 5 1401/02/14

Redirect درخواست (ریدایرکت) در asp.net core

در برنامه های ASP.NET Core برای تغییر مسیر(ریدایرکت) و Redirect به یک URL خاص روش های مختلفی وجود دارد. در این مقاله با این تکنیک ها و کدهای مورد نیاز برای تغییر مسیر یک درخواست در ASP.NET Core آشنا می شویم.

2٬563 5 1401/02/12

تبدیل enum به لیست انتخابی در asp.net core

در این آموزش ما بوسیله Reflection ها در سی شارپ و asp.net core یک enum را به لیست انتخابی یا SelectListItem تبدیل خواهیم کرد و بوسیله تگ select در بوت استرپ 5 نمایش می دهیم.

1٬753 3 1401/02/03

نحوه ارسال ایمیل در asp و c#

امروزه ارسال ایمیل به امری ضروری در پروژه های وب تبدیل شده است.از ارسال ایمیل در asp می توان در بخش های تایید حساب کاربری،بازیابی رمز عبور،ایمیل مارکتینگ،ارسال خبرنامه و ... استفاده نمود.در این آموزش نحوه ارسال ایمیل در asp core و سی شارپ پیاده سازی گردیده است.

2٬583 5 1401/02/03
نظرات

برای ثبت نظر باید در سایت ثبت نام یا ورود نمایید