dotNet full-stack web developer
پیاده سازی response caching در dotNET Core
این response caching تکنیکی برای ذخیره پاسخ های یک API یا برنامه وب در یک کش است تا بتوان آنها را سریعتر به درخواست های بعدی ارائه کرد.
پاسخ ها در یک کش با کلیدی که به طور منحصر به فرد آنها را شناسایی می کند ذخیره می شوند و حافظه پنهان دارای اندازه محدود و سیاستی برای حذف موارد در هنگام پر شدن است.
مزایای response caching
- بهبود عملکرد با کاهش بار روی سرور.
- کاهش بار سرور، زیرا می تواند به جای ایجاد پاسخ جدید، پاسخ ذخیره شده را ارائه دهد.
- کاهش استفاده از پهنای باند، مقدار دادهای را که باید بین سرور و مشتری منتقل شود، کاهش میدهد.
- امنیت بهبود یافته است زیرا می تواند تعداد درخواست هایی را که به سرور می رسد کاهش دهد و خطر انواع خاصی از حملات را کاهش دهد.
روش های پشتیبانی شده
ما می توانیم کش را روی روش های زیر اعمال کنیم:
- Get
- Head
پیاده سازی در dotNet 6
گام یک: پیکربندی Program.cs
مطمئن شوید که CORS قبل از UseResponseCaching فراخوانی شده است.
گام دو: استفاده از کش در کنترلر یا متد
این نمونه ای از ذخیره سازی سطح متد است، ما این خط کد را اضافه کرده ایم:
[ResponseCache(Duration = 30, Location = ResponseCacheLocation.Client)]
برای سطح کنترلر، همان خط را اضافه می کنیم، تفاوت این است که به جای متد، آن را روی کنترلر قرار می دهیم
ویژگی های ذخیره سازی توضیح داده شده
Duration = 30
حداکثر مدت را در header کنترل کش در چند ثانیه تنظیم می کند
Location = ResponseCacheLocation.Client
مکانی را تعیین می کند که داده ها در آن ذخیره شوند.
این ResponseCacheLocation دارای سه مقدار Any، Client و None است
Any :
هم در پروکسی ها و هم در سرویس گیرنده ذخیره می شود و هدر "Cache-control" را روی "public" تنظیم می کند.
Client :
فقط در سرویس گیرنده ذخیره می شود و هدر "Cache-control" را روی "خصوصی" تنظیم می کند.
None :
سرصفحه های "Cache-control" و "Pragma" روی "no-cache" تنظیم شده اند.
نمونه هایی از ذخیره سازی در دنیای واقعی
- وب سایت خبری
- وب سایت های تجارت الکترونیک
در برنامه خود می توانید برای آن دسته از درخواست هایی که پاسخ آنها پس از مدتی تغییر می کند و از آن مطمئن هستید، پاسخ کش را اعمال کنید.
چگونه می توان تأیید کرد که کش پیاده سازی شده است؟
یک برنامه کاربردی ایجاد کنید و سپس آن را از Postman درخواست کنید و زمان را روی 60 دقیقه تنظیم کنید، متوجه خواهید شد که فقط درخواست اول به کنترلر می رسد، پس از آن حتی اگر سعی کنید درخواست به کنترلر نمی رسد.
برگرفته از: Waseem .NET Newsletter
مطلبی دیگر از این انتشارات
Load Balancer vs. Reverse Proxy vs. API Gateway
مطلبی دیگر از این انتشارات
مقایسه Serilog, log4net و NLog کتابخانه های Logging در .Net
مطلبی دیگر از این انتشارات
Composition Over Inheritance