11

ما هو الحل المناسب لعرض بيانات كبيرة في صفحة ويب

  • m1m6

السلام عليكم

لدي موقع , ومن خلاله يستطيع الاعضاء البحث عن منتجات معينة, في بعض الحالات يقوم السيرفر بارجاع بيانات كثيرة تتعدى الـ 1000 سطر , مما يسبب في بطيء في معالجة البيانات وكذلك تعليق في المتصفح , حاولت البحث عن طرق بديلة لحل هذه المشكلة, وجدت حلول مثل القيام بعملية معالجة البيانات وتجهيزها مع الــ Html ومن ثم ارسالها للمستخدم

بمعنى اخر (Rendering on the server using ReactJS), لكن هذه الطريقة تصلح للصفحات الساكنة التي لا يوجد تفاعل للمستخدم فيها , اما في حالتي فبعد عرض نتائج البحث يقوم بالمستخدم بالتفاعل مع هذه النتائج ...الخ

اذا سؤالي , ما هي افضل طريقة لعرض البيانات بشكل سلس بدون ان تسبب بطيء عند المستخدم.

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

استخدم طريقة Infinite scroll

مثل قوقل لعرض الصور كل ماقام المستخدم بالنزول لاسفل الصفحة يتم جلب بيانات

وكذلك تويتر ايضا

مشكور, سأقوم بالبحث عن استخدامها وهل من الممكن ان تفيدني في حل المشكلة

عبد الرحمن أحمد أضف ردا

هناك أسلوب التحميل حين الطلب Load on demand حيث يكون هناك أدوات أو عناصر تتولى المهمة بحيث تعطيها مصدر البيانات وهي تتحكم بالتدفق إلى حدٍ ما شبيهة بما يفعله النزول بالسكرول في تطبيقات مثل فيسبوك أي يحضر ما يظهر على الشاشة وكلما نزلت بالسكرول يجلب الدفعة التالية.

جرب مسألة تعدد الصفحات ، بحيث أنه لديك 1000 سطر و في كل صفحة قم بعرض فقط 50 سطر ، مما سوف ينتجه عنه 20 صفحة يمكن للمستخدم التنقل بينها بكل سلاسلة .

حسناً, لدي 1000 نتيجة عندما اقوم بجلبها وترتيبها في الصفحات (Pagination), اظن انها ستبقى نفس المشكلة من حيث الكم الهائل من البيانات والقيام بعملية طباعتها على جهاز المستخدم!

لا فأنت عندما تقوم بجلبها من قاعدة البيانات سوف تقوم فقط بجلب 50 نتيجة الخاصة بالصفحة كل مرة ، أي أنك لن تجلبها دفعة واحدة.

وبعدها اقوم بالاكمال عن طريق طلب باقي البيانات من خلال Ajax ؟

نعم ، إبحث في عن "طريقة عمل نظام تعدد صفحات" و سوف تجد الأطنان من الدروس.

بالتوفيق.

مشكور اخوي على المساعده...

megasoft أضف ردا

استعمل pagination

في كل صفحة قم بعرض عدد معين من الاسطر باستعمال limit و offset مثلا لديك 1000 سطر

عندما تقسمه مثلا على 10 سطر في كل صفحة

يعطيك 100 صفحة

Select *from users offset 0 limit 10

وفي كل تحميل ترسل request فيها page فتقوم بالعملية التالية

(رقم الصفحة +عدد الاسطر في كل صفحة )

ناتج العملية يمثل هنا الoffset

فالصفحة الثانية تكون (10+10 ) وبذلك يكون sql

Select *from users offset 20 limit 10

وهكذا دواليك

انا اخذت هنا مثال على 10 اسطر في كل صفحة فانت يمكنك التقسيم على حسب ماتريده

ايضا load more و infini scroll تعمل بنفس المبدأ لكن الrequest تكون عبارة عن ajax بدون اعادة تحميل الصفحة

ارجوا ان اكون قد افدتك ^_^

من باب الفضول , ممكن تضع رابط موقعك :)

اعذرني, حاليا الموقع تحت التجربة :)

ممكن تعطيني لمحة بسيطة عن فكرة الموقع على الأقل واعذرني على الفضول مرة اخرى (:

موقع يقدم خدمة شحن البضائع من مكان الى مكان مع وجود وسيط.

بارك الله فيكم جميعا على الردود.

مشكورين