PDA

View Full Version : تحلیلی بر استفاده از session ! ؟؟



ARA
یک شنبه 19 اسفند 1386, 11:52 صبح
سلام
من به فکر یک سایت شلوغ پلوغ هستم که میخواهم یک سری اطلاعات مربوط به کابران را
تو session ذخیره کنم

این رو هم بگم قبلا سرچ کردم و به عقیده خیلی از دوستان که session بدرد نمیخوره از دیتا بیس استفاده کن ... چند تا برنامه open source رو هم دیدم حتی کد مربوط membership که در asp هستش رو دیدم که همه چیز رو تو دیتا بیس ذخیره میکنند

ولی این سوال رو دارم اطلاعات مربوط به یک نفر فوقش 200 بایت هستش , فرض کنیم من همزمان 1,000,000 کاربر online دارم که به عبارتی میشه 200,000,000 = 1000,000*200 بایت که میشه 200 مگا بایت که در مقابل رم های چند گیگا بایتی عددی نیست
که این کاربران درخواست های متوالی میفرستند و بنظر میرسه که این درخواستها باید با session چک بشه و اجازه اجرای اون کار رو بهش بدیم یا نه
و در حالت دیتا بیس با وصل شدن به دیتا بیس چک میشوند و سپس به درخواستشون جواب داده میشه که اونهم امری زمانگیره جون اولا باید چند تا کوئری بزنه و یا از view استفاده کنه که اونهم میتونه زمانگیر باشه

حالا من میخواهم بدونم دلیل این که میگن دیتا بیس چیه چون با این چیزی که من حساب میکنم session خیلی سریعتره

Behrouz_Rad
یک شنبه 19 اسفند 1386, 12:20 عصر
اون پروژه های Open Source ای که میبینی Session ها رو در دیتابیس ذخیره می کنن به این خاطر هست که مثلا اگر یک سیستم وبلاگ مثل بلاگفا یا پرشین بلاگ با 1 میلیون کاربر قرار باشه از اون سیستم استفاده کنند و این میزان مرتبا در حال افزایش هست و انتظار میره در آینده یک چیزی مثل Facebook یا MySpace به وجود بیاد! و یا من بی بضاعت که نمی تونم هزینه ی تامین یک سرور اختصاصی رو پرداخت کنم، آینده نگری حکم می کنه که اطلاعات در Session ذخیره نشه.
البته این حالت برای اکثر Web App هایی که نوشته میشه مهم نیست و درصد بالایی از پروژه هایی که نوشته میشن نیاز به رعایت این نکته ندارن.
به عنوان مثال، مرسوم هست که اکثرا نام یا نقش کاربر رو در Session ذخیره می کنن. این روش مسلما پیشنهاد نمیشه چون چیزی با عنوان کوکی وجود داره که همین اطلاعات رو می تونی در اون ذخیره و در صفحات مختلف مقدارش رو بررسی کنی و خود بخوان حدیث مفصل از مجمل...
Client رو تنبل بار نیارید. کمی از بار برنامه رو هم روی دوش اون بندازید. البته در این کار زیاده روی نکنید ;)

موفق باشید.

ARA
یک شنبه 19 اسفند 1386, 12:38 عصر
ممنون که جواب دادین !!
خوب اگه پای سرور اختصاصی در بین باشه و هم اینکه اگه فردا مثل اونها شد مسلما سرور های بیشتری بهشون اضافه میشه ،پس مشکل سرعت نداره ،و پس همه اینها بر میگرده به هزینه ها؟؟

به اضافه اینکه امنیت کوکی ها یک کم مد نظره یعنی ترجیح میدهند که تو کوکی ذخیره نشه ؟؟البته یک سری موارد دیگه برای ذخیره شدن در کوکی در نظر گرفته شده و فقط اصلی ها رو تو session میخواهیم ذخیره کنیم

Behrouz_Rad
یک شنبه 19 اسفند 1386, 12:54 عصر
دوست من!
شما وقتی از Session هم استفاده می کنی داری از کوکی استفاده می کنی! چون SID در کوکی ذخیره میشه تا سرور بتونه Tracking کنه.
ضمن اینکه محتویات کوکی باید رمزنگاری شده باشه و خاصیت HttpOnly اون رو هم برابر با true قرار بدی تا کسی با XSS نتونه کوکی رو بدزده.

موفق باشید.

ARA
یک شنبه 19 اسفند 1386, 13:05 عصر
دوست من!
شما وقتی از Session هم استفاده می کنی داری از کوکی استفاده می کنی! چون SID در کوکی ذخیره میشه تا سرور بتونه Tracking کنه.


شرمنده :خجالت:
این چیزی که شما میگین با اطلاعات قبلی من کمی تناقض داره چون قبلا من شنیده بودم تو browser هایی که قابلیت گرفتن cooki رو false کردن برای نگهداری اطلاعات کاربر از session استفاده میکنند

پس با توجه به حرف شما

در صورت غیر فعال بودن گرفتن کوکی در سمت کلاینت sessionid هم در حافظه کلاینت استفاده میشه

Behrouz_Rad
یک شنبه 19 اسفند 1386, 13:31 عصر
من شنیده بودم تو browser هایی که قابلیت گرفتن cooki رو false کردن برای نگهداری اطلاعات کاربر از session استفاده میکنند

اشتباه شنیدی :)


در صورت غیر فعال بودن گرفتن کوکی در سمت کلاینت sessionid هم در حافظه کلاینت استفاده میشه

اگر کوکی غیر فعال باشه نمی تونی از Session استفاده کنی مگر اینکه خاصیت cookieless رو در Web.Config برابر با UseDeviceProfile قرار بدی تا به طور خودکار تشخیص داده بشه که کوکی در مرورگر کاربر فعال هست یا نه. اگر فعال نبود، SID در URL قرار می گیره که باعث میشه هم URL زشتی داشته باشی و هم اینکه عطای استفاده از موتورهای جستجو رو به لقاش ببخشی.

موفق باشید.

DotNet_King
یک شنبه 19 اسفند 1386, 16:56 عصر
اشتباه شنیدی :)

باعث میشه هم URL زشتی داشته باشی و هم اینکه عطای استفاده از موتورهای جستجو رو به لقاش ببخشی.

موفق باشید.

از یه طرف استفاده از سیشن و کوکی مناسب نیست، از طرفی هم استفاده از بانک باعث استفاده از سیستم سرور میشه و تو در خواست های زیاد مشکل زا میشه! شما هم که روی تنها راهی که برام مونده بود- همون ارل - خط کشید. متاسفانه نمی شه از نظرات شما ساده رد شد:عصبانی++: به نظر شما باید چی کار کنم؟ به نظر شما از بین این گزینه کدومش به بقیه سر داره؟

Behrouz_Rad
یک شنبه 19 اسفند 1386, 21:20 عصر
شما بگو چه کاری میخوای انجام بدی تا راه حلش رو بهت بگم :)

DotNet_King
یک شنبه 19 اسفند 1386, 22:58 عصر
ببینید من چند ماه پیش یه سایت شبیه فاروم برای کلاس نوشته بودم! مشکل اینجا بود که فایروال ها مخصوصا کافی نت ها - به کوکی گیر می داد! سرورم هم زیاد معتبر نبود پس سیشن رو هم باید بی خیال می شدم! اون زمان در باره ویو استت ها هم اطلاعی نداشتم ولی الان هم که به لطف تاپیک های دوستان از جمله شما می دونم چیه این مشکل رو دارم که صفحات من ریدایرکت میشد! دو تا راه دیگه داشتم 1 دیتا بیس 2 کد کردن و ارسال متغیر ها با ارل! من هم راه دوم رو انتخاب کرده بودم
به نظر شما اگه راجع به ارل ریرایتینگ بخوانم، میتونم هم دیتا ها رو با ارل بفرستم و هم با موتور ها جستجو به مشکل نخورم! من چون از بانک اگسس استفاده می کنم و برای استفاده از connection pooling که خودتون معرفی کرده بودید هم مشکل داشتم و به اجبار این راه رو انتخاب کردم! البته وقتی میدیدم یاهو هم تو صفحه کاربری ایمیلم، گاه گداری به آخر ارل یه سری دیتا الصاق می کنه یه کم به روشم مطمئن شده بودم ! الان هم اون سایت برای من مطرح نیست! فرض کنید خودتون قصد دارید یه سیستم مثل بلاگفا - شاید هم مای اسپیس - رو راه اندازی می کنید! چه نکاتی رو در نظر می گیرید؟؟؟

Behrouz_Rad
یک شنبه 19 اسفند 1386, 23:21 عصر
حقیقتش اصلا نفهمیدم چی گفتی!
بهتره یک تاپیک جدید ایجاد کنی و یک بار مطلبت رو بنویسی و مطالعش کنی. اگر احساس کردی که خوانا و روان نوشتی اون وقت پستش کن.

متشکرم.