در مفهوم Cache دو اصطلاح Hit و Miss وجود دارد که Hit به زمانی گفته میشود که دادهی درخواست شده در Cache موجود باشد و Miss هم مخالف آن است و در صورتی که دادهی درخواست شده را نتوانیم در Cache پیدا کنیم، میگوییم Cache Miss اتفاق افتاده است.
با توجه به توضیح بالا هر چه ضریب Hit بالاتر باشد، میگوییم Caching کارآمدتری داریم. در نتیجه، فرمول زیر برای محاسبه میانگین زمان دسترسی به حافظه ارائه میشود:
memory reference time (T) = Average
الگوریتمهایی برای رسیدن به ضریب Hit بالا استفاده میشود که در ادامه میخوانید:
الگوریتم Bélády
این الگورتیم اطلاعاتی را که برای مدت طولانی در آینده مورد استفاده نخواهند بود را دور میریزد. الگوریتم Bélády فقط زمانی مناسب است که ما بتوانیم آینده را پیش بینی کنیم تا اطلاعاتی که کمتر مورد استفاده قرار میگیرند را شناسایی و حذف کنیم. در عمل این پیش بینی در بیشتر مواقع ممکن نیست در نتیجه در موارد محدودی میتوان از این الگوریتم استفاده کرد.
Least Recently Used (LRU)
این الگوریتم مواردی که اخیرا کمترین فراخوانی را داشتهاند را حذف میکند. LRU به هر کدام از دادههایی که در Cache ذخیره میکند یک عدد به عنوان عمر آن داده اضافه میکند. سپس با هر بار فراخوانی آن داده یک واحد به آن عدد اضافه میکند و در زمانهای مقرر اطلاعاتی که عمر کمتری دارند (شمارندهی کوچکتری دارند) را حدف میکند. این الگوریتم موثرترین روش مدیریت Cache است.
Most Recently Used (MRU)
بر خلاف الگوریتم LRU، این الگوریتم ابتدا مواردی که اخیرا بیشترین استفاده را داشتهاند را حذف میکند. این الگوریتم در شرایطی مفید است که احتمال فراخوانی یک داده قدیمیتر، بیشتر باشد.
Header های Cache چه میگویند؟
توسعه دهندههای وب از بخش Cache در Headerهای HTTP برای مشخص کردن دادههایی که میخواهند Cache شود و مدت زمانی نگهداری آنها در Cache استفاده میکنند.
با استفاده از این Headerهای Cache شما میتوانید استراتژی Cache خود را به گونهای مدیریت کنید که همیشه از به روز بودن اطلاعات اطمینان داشته باشید.
به عنوان مثال: "Cache-Control: Max-Age = 3600" که در تصویر زیر مشاهده میکنید، به این معنی است که فایل را لازم نیست بیش از یک ساعت cache کرد. پس از اتمام یک ساعت، فایل منقضی شده و باید دوباره آن را از سرور اصلی درخواست کرد.
البته تنظیم این مقادیر برای هر فایل و یا دستهای از فایلها، ممکن است سخت باشد و البته عملکرد CDN را از حالت بهینه خارج کند. CDNهای جدید مکانیزمهای هوشمندی دارند که این فرآیندها را مدیریت کرده و بهینه ترین حالت ممکن را ایجاد مینمایند.