Abanoub Asaad
Abanoub Asaad

@abanoub7asaad

9 تغريدة 3 قراءة Apr 18, 2023
تعالوا ندردش شوية عن ال API Pagination. لو افترضنا إن عندنا web app وهو e-commerce، فاليوزر لما يدخل عليه وعايز يشوف المنتجات اللي موجودة فيه فبالتالي فيه request هيحصل عشان ي retrieve مئات أو آلاف المنتجات من الداتابيز وممكن يكون العدد أكبر من كده. طيب لما أحاول أجيب كل
(1/9)
الكم ده من الداتا في request واحد، ايه المشكلة اللي ممكن تحصل؟ هتلاحظ إن فيه وقت كبير هيستناه اليوزر عقبال ما الداتا توصله عشان لما أجيب الداتا من الداتا بيز وأعملها loading في الميموري كل ده هينتج عنه performance issues لأن وقت ال retrieving كبير، و ui/ux issues لأني
(2/9)
بحاول أعرض كل المنتجات في single view. ايه الحل طيب؟ الحل في ال Pagination، وإن بدل ما أرجّع كل الداتا في request واحد فأنا ممكن أرجع الداتا في هيئة batches أو pages بحيث إن في كل مرة ب call ال api أرجع جزء من الداتا وده هيحسن ال performance ويخلي سرعة إسترجاع الداتا أسرع.
(3/9)
فيه نوعين مشهورين من ال Pagination وهم Offset Pagination و Cursor Pagination. هتكلم في الثريد ده عن ال offset pagination - لو رجعنا للمثال اللي ذكرناه بتاع ال e-commerce، وفكرنا شوية في إزاي المواقع بتهاندل حاجة زي كده هنلاحظ إن بيكون فيه مجموعة منتجات بتظهر أول ما بتفتح
(4/9)
ولما تنزل تحت شوية هتلاقي مذكور أرقام pages بحيث إنك لو في page 1 هتدوس علي page 2 عشان تظهرلك باقي المنتجات. فكده هم مطبقين مفهوم ال pagination ومقسمين كل المنتجات علي أجزاء أو pages. ليه بقي ده offset pagination - عشان أول مرة اليوزر فتح صفحة المنتجات فحصل API call جابت
(5/9)
مثلًا أول ٢٠ منتج، ولما هيدوس علي page 2 هيجيب تاني ٢٠ منتج وهكذا فبالتالي بيحصل request كل مرة وال request بيكون شامل limit و offset. ال limit ده عشان يحددلي عدد المنتجات اللي تجيلي وال offset عشان يحددلي أنا هبدأ من المنتج رقم كام. ملحوظة إن ال limit وال offset دول
(6/9)
بيكونوا parameters جايين في ال API وبستخدمهم لما بكتب query الداتابيز زي ما الصورة اللي تحت موضحة كده ⬇️
طيب لو سألتني هل ال offset pagination ليه مشاكل؟ هقولك آه مفيش حد كامل، يعني بالنسبة للمشاريع أو ال databases الصغيرة هيشتغل تمام ولكن لو الداتابيز كانت كبيرة فهيكون
(7/9)
فيه performance limitations عشان في كل مرة بيحصل request ب offset معين فأنا بمشي علي ال records بتاعه ال table لغاية ما اوصل لل offset أو المنتج اللي هبدأ من عنده، فأنا مثلًا عايز اروح لآخر page - فيه table فيه مثلًا 100k records فانا هضطر أعمل full table scan عشان بس أجيب
(8/9)
آخر records وده هياخد وقت كبير.
فيه مشكلة تانية برضو وهي ليها علاقة ب لو حصل real time change زي مثلًا منتجات جديدة اتضافت أو اتشالت فاليوزر ممكن يظهرله items تكون duplicate أو missing
دي كانت نبذة عن ال pagination وال offset pagination وشكرًا.
(9/9)

جاري تحميل الاقتراحات...