.:: محمدحسین فخرآوری ::.

با سلام و خسته نباشید به شما دوست عزیز به قسمت موضوعات وبلاگ مراجعه کنید. 09173700916

خالی نمودن تمامی حافظه Cache شده در ASP.NET

در نرم افزارهای تحت وب گاهی اوقات نیاز پیدا می کنید که تمام منابعی که در حافظه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/%...B1-aspnet.aspx

 

 

محمدحسین فخرآوری ، دوشنبه ۱۳۹۱/۱۰/۱۱ ، 20:51