ورود

View Full Version : خالي شدن سبد خريد که از Cache براي نگهداري آيتم ها استفاده مي کند



bftarane
دوشنبه 04 دی 1391, 19:08 عصر
سلام.

if (Cache[username] == null)
{
ShoppingCart cart = new ShoppingCart();
Cache.Insert(username, cart, null, DateTime.MaxValue, TimeSpan.FromDays(1));
}
if (!Page.IsPostBack)
BindGrid();

سلام. من کدهاي بالا رو براي سبد خريد استفاده کردم
مگه با کد بالا نبايد اطلاعات رو تا يک روز نگه داره.
من يه آيتم به سبد خريد اضافه کردم دقيقاً نمي دونم ولي حدود فکر مي کنم نيم ساعت 40 دقيقه بعد چک کردم
سبد خاليه.
دليل چي مي تونه باشه؟

ولي همون اول که آيتم رو اضافه کرده بودم خارج شدم و دوباره با همون نام کاربري وارد شدم سبد خريدم پر بود.

bftarane
دوشنبه 04 دی 1391, 19:46 عصر
خيلي عجيبه
الآن تايم گرفتم
حدود 22 دقيقه بعد چک کردم سبد خالي نبود.
دارم ديوونه ميشم.:متعجب:

bftarane
دوشنبه 04 دی 1391, 20:29 عصر
فکر مي کنم فهميدم مشکل از کجاست ولي اصلاً نمي تونم ربطش رو بفهمم
لطفاً راهنمايي کنيد
فکر مي کنم به کدهاي زير مربوط باشه
چون بعد از حدود 32و 33 دقيقه امتحان کردم ديدم سبد خالي شده.
و تنها جايي که يه 30 دقيقه استفاده کردم
کد زير هست
که در رويداد کليک دکمه لوگين نوشتم

DateTime expiration;
if (chk_rememberme.Checked)
{
expiration = DateTime.Now.AddMonths(1);
}
else
{
expiration = DateTime.Now.AddMinutes(30);
}
FormsAuthenticationTicket AuthTicket = new FormsAuthenticationTicket(1, txt_uname.Text, DateTime.Now, expiration, false, role);
string encryptedTicket = FormsAuthentication.Encrypt(AuthTicket);
سوال اول: به نظر شما اين دو قضيه به هم ربط دارن؟ يعني اين 30 دقيقه اون 1 روز رو داره خنثي مي کنه؟ اگه آره چرا؟
سوال دوم: چاره چيه؟

bftarane
سه شنبه 05 دی 1391, 15:02 عصر
لطفاً به اين سوال پاسخ بديد.

bftarane
چهارشنبه 06 دی 1391, 14:31 عصر
سلام. متوجه يه قضيه شدم که فکر مي کنم با مشکل بالا ارتباطي داشته باشه
من در صفحه گروه محصولات روي لينک گروه که کليک مي کنم با کوئري استرينگ آي دي گروه رو مي فرستم صفحه بعد و اونجا تمام محصولات با اين Category Id رو واکشي مي کنم و در ريپيتر نشون مي دم
اين خط اول کد ريپيتر هست

<asp:Repeater ID="rpt_lookpd" runat="server" EnableViewState="false">
اين قبلاً براي من کار مي کرد ولي تازه متوجه شدم که ديگه محصولات نشون داده نمي شن.
وقتي اون EnableViewState=false رو بر مي دارم مشکل حل ميشه.

حالا من فکر مي کنم اين دو تا قضيه يه ربطي به هم دارن.
کسي چيزي به ذهنش نمي رسه؟

fakhravari
چهارشنبه 06 دی 1391, 18:30 عصر
EnableViewState="false"
مقادیر کنترل ها درون او است.

bftarane
چهارشنبه 06 دی 1391, 21:19 عصر
بله آقاي فخرآوري شما درست مي فرماييد
ولي اگه ميشه اين لينک رو يه نگاهي بندازيد از ريپيتر استفاده کرده و صفحه بنديش کرده ولي ViewState رو False گذاشته براي اينکه Seo Friendly بشه.
منم از اون لينک استفاده کرده بودم و تا جايي که يادمه مشکلي نداشت تا اينکه تازه متوجه اين موضوع شدم.
http://www.dotnetfunda.com/articles/article456-custom-seo-friendly-paging-with-aspnet-repeater-or-datalist-control.aspx

الآن سوال اصلي من اون مسئله Cache هست.

bftarane
پنج شنبه 07 دی 1391, 00:28 صبح
مثل اينکه خالي شدن کارت ربطي به اين کد
expiration = DateTime.Now.AddMinutes(30); نداره.
چون اومدم به جاي 30 گذاشتم 10 بعد از 10 دقيقه چک کردم آيتم ها پاک نشده بودن.
من که ديگه عقلم به جايي قد نميده. احتمالاً مي رم از سشن يا تيبل استفاده مي کنم به جاي Cache. البته 30 دقيقه هم بمونه خودش خوبه ولي وقتي آدم از چيزي سر در نمياره به نظرم استفاده نکنه بهتره.

bftarane
پنج شنبه 07 دی 1391, 10:14 صبح
بالاخره يکي بهم در يه سايت يه جوابي داد که به نظرم کاملاً منطقي مياد
اين جواب رو داده
If its in Visual Studio. Then please note if you stop and rerun website Cache is cleared
If its in IIS, Check the Recycle settings as you may be recycling Application Pool every 30 minutes
و با توجه به اينکه سايتم روي هاسته حالا ايميل زدم از پشتيبان Recycle settings رو پرسيدم رو چند دقيقه گذاشتن.
در هر صورت من قانع شدم.

saeed_sho
پنج شنبه 07 دی 1391, 11:02 صبح
بالاخره يکي بهم در يه سايت يه جوابي داد که به نظرم کاملاً منطقي مياد
اين جواب رو داده
If its in Visual Studio. Then please note if you stop and rerun website Cache is cleared
If its in IIS, Check the Recycle settings as you may be recycling Application Pool every 30 minutes
و با توجه به اينکه سايتم روي هاسته حالا ايميل زدم از پشتيبان Recycle settings رو پرسيدم رو چند دقيقه گذاشتن.
در هر صورت من قانع شدم.
جواب ایمیلو گرفتین لطفا بگین که اشکال از اون بود یا نه

bftarane
پنج شنبه 07 دی 1391, 12:53 عصر
سلام.
نتيجه اين بود.
recycle worker processes 60 minutes
ولي کش 30 دقيقه اي خالي ميشه نمي دونم اين توجيهش چيه.
کسي مي تونه توجيهي براي اين قضيه داشته باشه؟