شما اینجا هستید: خانه / مقالات آموزشی / کتابخانه ی Entity Framework Extended – مکانیزم Caching

کتابخانه ی Entity Framework Extended – مکانیزم Caching

در مطالب قبل با دو قابلیت “ویرایش و حذف دسته ای” و “ارسال همزمان چند Query” از کتابخانه ی Entity Framework Extended آشنا شدیم. در این مقاله به بررسی مکانیزم Caching در این کتابخانه خواهیم پرداخت.

ممکن است هنگام پیاده سازی نرم افزارتان با سناریوهایی مواجه شوید که بعضی داده های موجود در دیتابیس بسیار دیر به دیر تغییر کنند و یا در بعضی مواقع در طول عمر نرم افزار هیچگاه تغییر نکنند (مانند لیست کشورها و یا لیست استان های یک کشور) اما تعداد دفعات خواندن آنها بسیار زیاد باشد. در چنین مواقعی می توان با خواندن داده ها از پایگاه داده و Cache کردن آنها در حافظه، سرعت و بازدهی نرم افزار را افزایش و مقدار درخواست های ارسالی به سمت سرور پایگاه داده را کاهش داد.

با استفاده از متد FromCache موجود در EntityFramework.Extensions می توان نتایج یک Query را Cache نمود :

 

در صورتی که که نتیجه ی Query از قبل در حافظه Cache نشده باشد (در اولین درخواست) از پایگاه داده خوانده می شوند ولی در دفعات بعد از حافظه خوانده شده و بازگردانده می شود. در صورتی که متد FromCache بدون پارامتر فراخوانی شود، از تنظیمات پیش فرض برای نگهداری Cache استفاده خواهد کرد. میتواند با ارسال پارامتر به این متد زمانی دلخواه جهت Expire شدن نتیجه ی Query مشخص کنید :

در مثال بالا مدت زمان ۱ دقیقه برای Expire شدن Cache در نظر گرفته می شود. سه متد در کلاس CachePolicy برای استفاده در متد FromCache وجود دارد :

 

  • WithDurationExpiration

این متد مدت زمان مشخصی (مانند ۱ دقیقه در مثال بالا) را برای Expire شدن نتایج در نظر میگیرد. (پارامتر از نوع TimeSpan)

  • WithAbsoluteExpiration

این متد تاریخ و زمان مشخصی را جهت Expire شدن نتایج در نظر میگیرد. (پارامتر از نوع DateTimeOffset)

  • WithSlidingExpiration

این متد نتایج Cache شده را در صورتی که هیچ درخواستی برای دسترسی به آنها نباشد در مدت زمان مشخص، Expire می کند. در صورتی که داده ها از Cache خوانده شوند، مدت زمان Expire شدن آن مجدد تمدید خواهد شد.

 

همچنین میتوانید با استفاده از پارامتر tags در متد FromCache بر روی Cache خود برچسب زده و آنها را به صورت دستی Expire کنید :

 

همچنین اعمال Tag بر روی Cache ها می تواند به شما کمک کند تا نتایج Query ها را بر حسب کاربر (و یا هر فاکتور دیگری) به صورت جدا ذخیره و مدیریت نمایید :

 

 پیاده سازی به جا و مناسب Caching می تواند تاثیر مثبتی در بازدهی و سرعت نرم افزارتان داشته باشد. همانطور که پیاده سازی نادرست آن می تواند منجر به کمبود حافظه در سرور و یا نادرستی اطلاعاتی در سیستم شود. به همین علت هنگام پیاده سازی مکانیزم Caching باید دقت زیادی به خرج داده و تمام جوانب را در نظر بگیرید.

درباره هادی احمدی

هادی احمدی
برنامه نویس، تحلیلگر و طراح نرم افزار که به فعالیت بر روی بسترهای نرم افزاری مایکروسافت مشغول هستم. علاقه مند به مباحث طراحی و معماری نرم افزار و همچنین پیاده سازی سیستم های اطلاعاتی پیچیده می باشم.

6 نظر

  1. سلاباید از زحمات شما دوست عزیز در استارت کار تشکر و قدردانی کرد.
    البته درصورت امکان امکان دریافت خروجی PDF برای کاربران قرار بدین خیلی بهتر میشه.
    موفق باشید.

    • هادی احمدی

      سلام، خواهش میکنم لطف دارید
      به زودی نسخه ی PDF و قابل چاپ مطالب رو قرار میدم.
      ممنون از پیشنهاد خوبتون

  2. سلام استاد امیدوارم حالتون خوب باشه
    داشتم توی اینترنت دنبال CachePolicy های entityFramework extended میگشتم رسیدم به سایت شما!

    خیلی خوب بود مرسی استاد

  3. سلام آقای احمدی مرسی واقعا اولین سایتی هست که ساده و جامع مطالبو میگه دمت گرم مرسی

  4. پروین ترکمان

    سلام این مطلب عالی بود خیلی بدرد من خورد
    ممنون

نظر بدهید

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

*

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

رفتن به بالا