ورود

View Full Version : خالی کردن کش



resident
پنج شنبه 06 آذر 1393, 16:04 عصر
سلام. وقت بخیر

من تو login برنامم ، یه سری اطلاعات رو ریختم تو کش. برای هر کاربر ، اطلاعات خاص خودش در کش ریخته میشه.
var formPermissions = SelectByRoleID(roleID);

CacheClass cahce = new CacheClass();

foreach (CommonFormPermission fp in formPermissions)
{
cahce.AddToCache(fp, "Permission/" + fp.Form_Title + "/" + fp.Action_Title + "/" + userID.ToString());

}

حالا وقتی کاربر از برنامه خارج میشه میخوام کش مربوط به این کاربر خالی بشه.
چطور این کار رو انجام بدم؟ دستور خالی کردن کش چیه؟
البته میخوام فقط کش مربوط به این کاربر خالی بشه نه کش همه ی کاربرها

مهدی کرامتی
شنبه 08 آذر 1393, 10:21 صبح
خوب وقتی شما با دستورات برنامه نویسی چیزی را در Cache قرار می دهید با دستور Remove هم می توانید آیتم مورد نظر را از Cache حذف کنید. بالطبع نباید کل Cache را خالی کنید، چون Cache به ازای کل سایت حساب میشه نه یک کاربر خاص.

یک راه حل دیگه استفاده از Session است که به دلیل مختص بودن به هر کاربر دغدغه استفاده از Cache رو هم نداره.

در یکی از پروژه ها، من یک کلاس برای دسترسی به Session (با سناریویی شبیه به شما) نوشته بودم. اگر آیتم های مورد نظر در Session وجود داشت که اونها رو می خواند و بر می گرداند. در غیر این صورت مقادیر را از محلی می خواند و دوباره در Session قرار می داد. این جوری مطمئن بودم که آیتم های مورد نیاز تا زمانی که شرایط مورد نظر من (مثلا لاگین بودن کاربر و آنلاین بودنش) برقرار بود همیشه در Session وجود دارند.

resident
یک شنبه 09 آذر 1393, 09:09 صبح
من سطوح دسترسی کاربران به فرمها و عملیات ها رو در کش گذاشته بودم.
من با سشن یه مشکلی که دارم اینه که زود expire میشه. زمانش رو هم در Web.config زیاد کردم اما باز هم session_end خیلی فایر میشه