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