PDA

View Full Version : آموزش: خالی نمودن تمامی حافظه Cache شده در ASP.NET



fakhravari
پنج شنبه 16 آذر 1391, 18:59 عصر
در نرم افزارهای تحت وب گاهی اوقات نیاز پیدا می کنید که تمام منابعی که در حافظه Cache ذخیره شده اند را حذف نمایید تا دفعه بعد با اطلاعات جدید پر شوند.
در مورد Session State متدی به نام Abandon وجود دارد که با فراخوانی آن، تمامی اطلاعات ذخیره شده در حافظه Session برای کاربر مورد نظر خالی می شود ولی در مورد حافظه Cache چنین متدی وجود ندارد.
با استفاده از تکنیک زیر می توانید حافظه Cache را به طور کامل خالی نمایید.


IDictionaryEnumerator enumerator = HttpContext.Current.Cache.GetEnumerator();
List<string> itemsToRemove = new List<string>();
while (enumerator.MoveNext())
{
hh.Add(enumerator.Key.ToString());
itemsToRemove.Add(enumerator.Key.ToString());
}
foreach (string itemToRemove in itemsToRemove)
HttpContext.Current.Cache.Remove(itemToRemove);
تذکر :

به یاد داشته باشید که این ترفند در مورد صفحاتی که از OutputCache استفاده نموده اند کارساز نیست.
برای خالی نموندن حافظه Cache شده در صفحاتی که از OutputCache استفاده نموده اند از قطعه کد زیر استفاده نمایید.

HttpRuntime.Close();



مثال
List<string> hh = new List<string>();
Cache["d1"] = new DataTable();
Cache["d2"] = new DataSet();
Cache["d3"] = "salam";


IDictionaryEnumerator enumerator = HttpContext.Current.Cache.GetEnumerator();
List<string> itemsToRemove = new List<string>();
while (enumerator.MoveNext())
{
hh.Add(enumerator.Key.ToString());
itemsToRemove.Add(enumerator.Key.ToString());
}
foreach (string itemToRemove in itemsToRemove)
HttpContext.Current.Cache.Remove(itemToRemove);
منیع:

http://30sharp.com/article/2/141/1/%D8%AE%D8%A7%D9%84%DB%8C-%D9%86%D9%85%D9%88%D8%AF%D9%86-%D8%AA%D9%85%D8%A7%D9%85%DB%8C-%D8%AD%D8%A7%D9%81%D8%B8%D9%87-cache-%D8%B4%D8%AF%D9%87-%D8%AF%D8%B1-aspnet.aspx