در نرم افزارهای تحت وب گاهی اوقات نیاز پیدا می کنید که تمام منابعی که در حافظهCache ذخیره شده اند را حذف نمایید تا دفعه بعد با اطلاعات جدید پر شوند.
در مورد Session State متدی به نام Abandon وجود دارد که با فراخوانی آن، تمامی اطلاعات ذخیره شده در حافظه Session برای کاربر مورد نظر خالی می شود ولی در مورد حافظه Cache چنین متدی وجود ندارد.
با استفاده از تکنیک زیر می توانید حافظه Cache را به طور کامل خالی نمایید.
IDictionaryEnumerator enumerator = HttpContext.Current.Cache.GetEnumerator();
List<string> itemsToRemove =newList<string>();
while(enumerator.MoveNext())
{
hh.Add(enumerator.Key.ToString());
itemsToRemove.Add(enumerator.Key.ToString());
}
foreach(stringitemToRemoveinitemsToRemove)
HttpContext.Current.Cache.Remove(itemToRemove);
تذکر :
به یاد داشته باشید که این ترفند در مورد صفحاتی که از OutputCache استفاده نموده اند کارساز نیست.
برای خالی نموندن حافظه Cache شده در صفحاتی که از OutputCache استفاده نموده اند از قطعه کد زیر استفاده نمایید.
HttpRuntime.Close();
مثال
List<string> hh =newList<string>();
Cache["d1"] =newDataTable();
Cache["d2"] =newDataSet();
Cache["d3"] ="salam";
IDictionaryEnumerator enumerator = HttpContext.Current.Cache.GetEnumerator();
List<string> itemsToRemove =newList<string>();
while(enumerator.MoveNext())
{
hh.Add(enumerator.Key.ToString());
itemsToRemove.Add(enumerator.Key.ToString());
}
foreach(stringitemToRemoveinitemsToRemove)
HttpContext.Current.Cache.Remove(itemToRemove);