
یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شیگرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفهای و امکانات کامل!
مشاهده بیشتر
یادگیری MVC Core از مبانی تا پیشرفته: شیگرایی، Routing، Entity Framework، امنیت، تست یونیت، Razor، Ajax، و پروژههای کاربردی! یک دوره کامل برای تسلط بر توسعه وب با ASP.NET Core. به صورت حضوری و آنلاین!
مشاهده بیشترمشخصات مقاله
حافظه پاسخASP.NET MVC Core 2.0
ASP.NET Core 2.0 Response Caching
Problem
نحوه ذخیره(cache) responses در ASP.NET Core.
Solution
برای یک پروژه خالی ایجاد کنید، services و middleware برای ذخیره در Startup پیکربندی کنید،
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public void ConfigureServices( IServiceCollection services) { services.AddResponseCaching(); services.AddMvc(); } public void Configure( IApplicationBuilder app, IHostingEnvironment env) { app.UseResponseCaching(); app.UseMvcWithDefaultRoute(); } <button></button> |
یک کنترلر ایجاد کنید، و ویژگی [ResponseCache] را اضافه کنید:
1 2 3 4 5 6 7 8 9 10 11 12 | [ResponseCache(Duration = 60)] public class HomeController : Controller { public IActionResult Index() { return View( new HomeOutputModel { LastUpdated = DateTime.Now }); } } <button></button> |
پاسخ حاوی یک هدر Cache-Control است.

همانطور که بین کنترلر با قابلیت ذخیره سازی(caching) (Home) و یکی دیگر بدون آن (Movies) حرکت می کنید، متوجه خواهید شد که زمان به روزرسانی نشده است، یعنی آن را از سرور دریافت نمی کند بلکه از حافظه پنهان دریافت می کند.

Discussion
Response Caching middleware مسئول ذخیره و خدمت به پاسخ از cache است. هدرهای مرتبط با حافظه پنهان را به پاسخ HTTP اضافه می کند،و Cache-Control اصلی آن است.
هنگامی که middleware تنظیم می شود، ویژگی [ResponseCache] به controller / action اعمال می شود تا caching را فعال کند. این ویژگی دارای برخی از پارامترهای مفید برای تغییر رفتار middleware است.
- Duration : استفاده از تنظیم زمان کش (در ثانیه).
- Location : به هدر Cache-Control به عنوان public ، private یا no-cache ترجمه می شود.
- VaryByQueryKeys: پاسخ ها بر اساس پارامترهای query string ذخیره می شوند.
- VaryByHeader: استفاده می شود تا هدر پاسخ Vary HTTP را تنظیم کند.
- CacheProfileName: میتواند به تنظیمات پروفایل حافظه پنهان در middleware MVC اشاره کند (نگاه کنید به زیر).
1 2 3 4 5 6 7 8 9 | services.AddMvc(options => { options.CacheProfiles.Add( "default" , new CacheProfile { Duration = 30, Location = ResponseCacheLocation.Any }); }); <button></button> |
Logging
شما می توانید ورود به سیستم را فعال کنید تا عملکرد میان افزار Response Caching middleware را مشاهده کنید. در زیر اولین درخواست برای Home / Index است (خطوط highlighted را ببینید). درخواست های بعدی در این چرخه عمر(lifecycle) قرار می گیرند و به صفحه از حافظه پنهان (تا تاریخ انقضای آن) خدمت می کنند:

source code را می توانید از لینک زیر دانلود کنید: