PDA

View Full Version : سوال: گریدی با ترافیک داده ای بالا



mohsen-sh
پنج شنبه 23 دی 1389, 01:46 صبح
من در حال ساخت سایتی هستم که در اون در قسمتیش باید وضعیت جدول هامو به صورت حدودا آنی نشون بدم
دیتابیس من یکجاست و از مکانهای مختلف به سرعت در حال اپدیت هست،یعنی ممکنه در هرثانیه چند آپدیت از چند مکان داشته باشه
از طرفی مدیر سیستم باید اطلاعات رو به سرعت ببینه که واکنش لازم رو انجام بده(ممکنه چند مدیر آنلاین باشن)
با تریگر و اژاکس میتونم به کلاینتهام اطلاع بدم که تغییراتی انجام شده
ولی با توجه به اینکه باید اطلاعاتشو نشون بدم،چه راهی پیشنهاد میکنید که خیلی خیلی سریع باشه
اصولا این لیست یه گریدویو باید باشه که اطلاعات آنی رو نمایش میده
گرید ویویی هست که فقط رکورد اضافه شده رو اضافه کنه و کل داده هارو نخاد بایند کنه یا باید با آژاکس و html پیاده سازی کنم؟

منتظر نظرتون هستم
ممنون

Javad_Darvish_Amiry
پنج شنبه 23 دی 1389, 01:59 صبح
طبیعتا با کدنویسی سمت کلاینت مثلا کار با jQuery کد بهینه تر و منعطف تری به دست میاری. ولی باز بسته به مورد داره. میخوای رکورد های جدید، به رکورد های قبلی اضافه بشن یا نه هر بار لیستت آپدیت میشه؟ گرید ویو اصلا جوابگو نیست و برو سمت کلاینت. اگه بیشتر توضیح بدی که بدونم دقیقا چی میخوای بهتر میتونم کمکت کنم.

mohsen-sh
پنج شنبه 23 دی 1389, 13:03 عصر
ممنون از پاسختون
راستش مدیر باید مثلا 20 -30 رکورد آخر رو ببینه که واکنش لازم رو نشون بده و مهم هم هست
پس یعنی مثل اینکه دارم سمت کلاینت یه گریدویو خودم میسازم و نشون کاربر میدم(در هر مثلا 10 ثانیه)؟
آخه شاید اینم سرعت لازم رو نداشته باشه!!
پس من چکار کنم؟
ممنون

Javad_Darvish_Amiry
پنج شنبه 23 دی 1389, 14:25 عصر
این چه کاری هست که 10 ثانیه هم حتی براش زیاده ؟؟؟!!!
به هر حال... گریدویو رو بی خیال. یه لیست بساز که هنگام لود صفحه آیتم های مورد نظرت توش بیان (li) سمت کلاینت هم باشه (یعنی ران ات سرورش نکن برادر) که کار اونور برات راحت باشه. بعد سمت کلاینت یه حلقه بی پایان بساز (با setInterval یا setTimeout یه تابع بنویس که یا هر 10 ثانیه اجرا بشه یا هر 10 ثانیه خودشو فراخونی کنه، بسته به مهارتت و اینکه دیگه چه کد هایی تو صفحه ات هست داره) . تو هر بار فراخونی آخرین ای دی رکوردی که تو صفحه داری رو به سرور بفرست، و اونجا آیتم های جدیدی که بعد از اون آی دی اضافه شدن رو واکشی کن و به کلاینت برگردون. دوباره سمت کلاینت آیتم ها رو هر کدومو بریز تو یه li و فرمت بندی مناسب طراحی ات رو بهش اعمال کن و به بالای لیستت (ul) اضافه کن. اما یه نکته هم یادت نره، با این سرعت بالای واکشی که شما می فرمایید، تعداد آیتم های لیستت خیلی زود سر به فلک میکشه و مرورگر هنگ میکنه؛ بنابراین، تو هر آپدیت، به تعداد آیتم های جدیدی که به لیست اضافه میکنی، از آیتم های قدیمی حذف کن که تعداد ایتم ها همیشه توی لیست ثابت بمونه. این بهینه ترین و سریعترین روشیه که به ذهن من میرسه. سمت سرور هم برای واکشی از وب-سرویس استفاده نکن، پیج معمولی قرار بده بهینه تره. میتونی به این نوشته مراجعه کنی (http://barnamenevis.org/showthread.php?269855-%D9%88%D8%A8-%D9%81%D8%B1%D9%85-%D9%87%D8%A7-%D8%A8%D9%87-%D8%AC%D8%A7%DB%8C-%D9%88%D8%A8-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D9%87%D8%A7). اگه jQuery کار کرده باشی و از طرف دیگه به کنترل های سمت سرور ASP.NET وابسته نباشی، این کار خیلی راحت تر از اونیه که فکرشو بکنی.
پاینده باشی. یا حق