Table of Contents
لماذا مسائل الأداء عند معالجة مجموعات البيانات الكبيرة في نظام iOS
وتحتاج التطبيقات الحديثة للنظم الإيكولوجية بصورة متزايدة إلى عرض كميات كبيرة من المحتوى، من وسائط الإعلام الاجتماعية التي تضم مئات الوظائف إلى فهرس للمنتجات التي تحتوي على آلاف الأصناف، وبدون إدارة دقيقة للبيانات، تؤدي هذه السيناريوهات بسرعة إلى تدهور الأداء، والتشويش، والاستهلاك المفرط للذاكرة، كما أن التحميل الكسول، المعروف أيضاً باسم التحميل المؤجل أو التحميل الذي يدفعه الطلب، يوفر حلاً منظماً لهذه التحديات بضمان أن تكون البيانات مزودة بالفعل وملزمة.
إن اختناقات الأداء الأساسية في وجهات النظر القائمة الكبيرة واضحة، وإذا حاولت تحميل كامل البيانات التي تم وضعها في الذاكرة في وقت واحد، فإن الطلب يستهلك كمية كبيرة من الرش، ويختبر فترات الحمل الأولية الطويلة، ويدخل تلعثماً مرئياً أثناء التكسير، وعلى النقيض من ذلك، فإن التحميل الكسول يبقي على استخدام الذاكرة متناسباً مع عدد الخلايا الظاهرة، التي لا تمثل عادة سوى جزء صغير من مجموع البيانات التي وضعت.
Understanding Lazy Loading in the iOS Ecosystem
ويعزز التحميل الكسول في نظام iOS النمط المتأصل في UITableView] و]UICollectionView]، الذي يُصمم لإعادة استخدام الخلايا بدلاً من إنشاء حالات جديدة لكل صف أو بند، وعندما تُغلق الخلية في شكلها، فإنه يوضع في موضع آخر
ويمتد هذا المفهوم إلى طبقة البيانات بدلا من تحميل أو حساب البيانات الكاملة التي تم إعدادها، فإن بيانات تحميل التطبيقات في أشلاء منفصلة، وكثيرا ما تسمى الصفحات أو البطاطس، ويرى المستخدم أول قطعة على الفور، بينما يتم جلب القطع اللاحق قبل الحاجة إليها، وهذه التقنية مهمة للغاية عندما يتعين استخلاص البيانات من نظام معلومات قياسية عن بعد، حيث أن شبكة منافذ التناوب تُدخل في مسارات هامة.
ومن منظور إدارة الذاكرة، يؤدي التحميل الكسول إلى تخفيض مجموعة العمل التي تبلغ ذروتها، ولا يُحتل كل قطعة من الطبق المحمل ذاكرة إلا في حين يتفاعل المستخدم مع ذلك الجزء من المحتوى، وعندما يجتاز المستخدم قطيعاً، يمكن للنظام أن يفرج عن الموارد المرتبطة به، مع الحفاظ على القدرة على إدارة البصمات العامة.
استراتيجية التنفيذ الأساسية للضغط الكسول
ويتطلب تنفيذ التحميل الكسول في نظام iOS مزيجاً من رصد المواقف المتأصلة، وإدارة مصادر البيانات، وجلب البيانات المتنازعة، ولا يزال النمط الأساسي هو نفسه بالنسبة لكل من ] و]UICollectionView، مع إجراء تعديلات طفيفة في هذا الصدد.
رصد موقف الوفود من النظام الأساسي
ويستخدم النهج الأكثر شيوعاً بروتوكول [(FLT:0)] UIScrollViewDelegate ] الذي يرثه كل من الجدول والآراء التي تجمعها، وطريقة المندوبين الرئيسيين هي ، التي تشعل باستمرار كمستخدمين، وفي هذه الطريقة، تُحسب ما إذا كان المستخدم يقترب من نهاية المحتوى المحمل حالياً.
ويقارن الحساب الموحد المحتوى الحالي بحجم المحتوى الإجمالي، مطروحا منه طول الإطار المرئي، ويحدّد عامل العتبة، الذي يبلغ عادة ارتفاع الإطار مرتين أو ثلاث مرات، متى يُشغل حمولة، ويضمن هذا التحميل الوقائي أن البيانات الجديدة تبدو بطيئة قبل أن يصل المستخدم إلى حافة المجموعة الحالية.
:: مثال على شفرة سويفت باستخدام عتبة طولين إطاريين:
ولمنع المكالمات الزائدة، ينبغي أن تُدخلوا أيضاً علماً، مثل ]، يحجب الطلبات الإضافية حتى تكتمل المقبض الحالي، وبدون هذا الحراسة، قد تؤدي طريقة المندوبين إلى تحميلات متطابقة متعددة أثناء التهجير السريع.
استخدام نظام تحديد المواقع المتطورة
بدءاً من محطة إي إس 10، بدأ (آبل) العمل بأجهزة مخصصة للتحميل الممددة للكميات، وكلتاهما [(FLT:0]]] يمكن الحصول على بيانات عن طريق الرد و] و[المؤشر الإلكتروني:2]]
(ج) تنفيذ طريقة ] يُحوّل المنطق المُستدل من مندوب التموين إلى بروتوكول مكرس، ويقلل هذا النهج من كمية الشفرة المُضللة ويحسّن إمكانية المحافظة عليها، كما يدعو النظام إلى عدم الحاجة إلى بعض الأصناف، مما يتيح لك فرصة إلغاء طلبات الشبكة.
مثال سويفت على وجهة نظر جمع:
يعمل مكتب التحقيقات الفدرالي بشكل جيد بشكل خاص عندما يقترن بـ وثائق آبل الرسمية لوكالة UICollectionViewDataSourcePretching ، التي توفر توجيها إضافيا بشأن إدارة المسارات القياسية.
تقنيات متقدمة في مجال المباغتة
التحميل الكسول مرتبط ارتباطاً وثيقاً باستراتيجية التهوية التي تستخدمها مساندتك أو مصدر البيانات، الطريقة التي تطلب بها صفحات تؤثر على تعقيد تنفيذ العملاء وخبرة المستخدمين عموماً.
المحركات غير المأهولة
ويستخدم التهوية القائمة على أساس غير مقصود مزيجاً من عدد الصفحات و] حجم الصفحات ] لطلب البيانات، فعلى سبيل المثال، يطلب الطلب الأول من البنود من صفر إلى 19، ويطلب الطلب الثاني من البنود 20 إلى 39، وهكذا، يكون هذا النهج مستقيماً لتنفيذ مجموعات العملاء والأشغال الجيدة.
ويحتفظ العميل بالعد الجاري للأصناف المحملة ويجتاز المبلغ التالي مع كل طلب، ولكن إذا أدرجت أو حذفت البنود في النفقة بين الطلبات، فإن التعويض يمكن أن يصبح غير دقيق، مما قد يؤدي إلى تكرار أو فقدان أصناف.
المحركات المتحركة
ويتفادى التهديف القائم على أساس المناورات مسائل الاستقرار التي تُقابل باستخدام جهاز تحديد الهوية أو الشعار الوحيد الذي يُعد موقف آخر مادة محشوة، ويرسل العميل هذا الشعار بطلب لاحق، ويعيد البنود التي تظهر بعد ذلك الستار إلى الوراء، وهذه التقنية أكثر موثوقية بالنسبة لمجموعات البيانات الدينامية، مثل وسائط الإعلام الاجتماعية التي تظهر فيها أصناف جديدة في كثير من الأحيان.
ومن منظور التحميل الكسول، يتطلب التهوية القائمة على الضمادات من العميل تخزين الشعار من الدفعة الأخيرة وإدراجه في المكالمات اللاحقة، ولا يزال التنفيذ مماثلاً للتمهيد القائم على التعويض، ولكن المنطق الداعم يجب أن يفسر بدقة الشعار. The JSON:API specification offers standard guidance on cursor-based pagination[FLT]:
إيماج: التحمل الكسول والتقدير
وفي العديد من تطبيقات نظام المعلومات الإدارية المتكامل، تكون أكبر مستهلكين للذاكرة صور ملحقة بخلايا منضدة أو خلايا مناظر جمع البيانات، إذ إن وضع صور كاملة الاستبانة لكل بند في مجموعة بيانات كبيرة يمكن أن يستنفد بسرعة الذاكرة المتاحة، ولا يشمل التحميل الكسولي المضلل إدخال بيانات الصور إلا عندما تصبح الخلية المقابلة واضحة أو على وشك أن تصبح واضحة.
وهناك عدة مكتبات لفرز الصور، مثل مكتبة SDWebImage، وK Kingfisher، وNuc، متخصصة في صور التحميل الكسولة مع أقراص مدمجة ومخابئ للذاكرة، وتعالج هذه المكتبات تعقيدات التنزيل، والتشجير، وصور الإلغاء المخففة عن الخيوط الرئيسية، وعندما تُعاد تدوير خلية، تقوم المكتبة تلقائيا بإلغاء أي تحميل للصور المعلقة يرتبط بالمحتوى السابق.
حتى مع مكتبة للخياطة، يجب أن تعتمدي تقنيات إضافية للتصوير الأمثل، وإستعادة الصور إلى حجم العرض قبل إصدارها، وتجنب الاتصال مراراً، واستخدام صور توازن الجودة وحجم الملفات.
إدماج الصور الحديثة
وقد استحدث تطور مصانع سويفت واليوس SDKs أنماطا جديدة تبسط التحميل الكسول بينما تحسن القدرة على قراءة الشفرة وتحسن القدرة على العمل.
Async/Await Pattern
نموذج تطابق (سويفت) الذي تم إدخاله في (سويفت 5-5) يسمح لك بكتابة رمز متزامن يبدو متزامناً هذا النمط مفيد بشكل خاص للتكسير الكسول لأنه يزيل الحاجة إلى متعهدي الإكمال أو تفويض التحذيرات يمكنك تحديد وظيفة
مثال يستخدم الأسينك/الإنتظار:
The block ensures that UI updates happen on the main thread, while the network fetch in can run concurrently without blocking the interface.
إطار عمل اللجنة
وفيما يتعلق بالطلبات التي تستهدف نظام iOS 13 ثم، يقدم إطار اللجنة نهجا تفاعليا في التحميل الكسول، ويمكنك أن تُمثل حمولة بياناتك كمنشر تُصدر صفحات جديدة، ويشترك في ذلك الناشر في مراقبة النظرات ويستكمل الجدول أو وجهة النظر المتعلقة بجمع البيانات كلما وصلت بيانات جديدة، وتدمج اللجنة بطبيعة الحال مع مصادر بيانات قابلة للنشر، مما يتيح تحديثات متحركة عند إدخال صفحات جديدة.
أفضل الممارسات في مجال الإنتاج - إعادة الإنتاج
وفي حين أن النمط الأساسي للتحميل الكسول هو نمط مباشر، فإن تطبيقات الإنتاج تتطلب الاهتمام بقضايا حافة وتفاصيل الأداء.
الحمل المسبق استراتيجيا
أما بيانات الشحن المبكر جداً عن نطاقات النفايات وذاكرتها، في حين أن تحميلها متأخر جداً يجعل المستخدم يرى خلايا فارغة، وينبغي أن تُحسب عتبة التحميل المسبق، التي يُعبر عنها عادة كعديد من طول الإطار المرئي، على أساس متوسط حجم البيانات ودرجة تواتر الشبكة، وبالنسبة للشبكات السريعة، قد تكفي عتبة ارتفاع إطاري واحد؛ وبالنسبة للوصلات البطيئة، زيادة العتبة لضمان وصول البيانات قبل أن يُزِّلِّلِّزَّة.
تنفيذ مؤشرات تحديد مواقع العمل
وعندما يجري تنفيذ عملية للجلب، يُظهر مؤشر تحميل في أسفل القائمة، ويُقدم هذا المؤشر تعليقات بصرية مفادها أن هناك المزيد من المحتوى يجري تحميله، كما أن مؤشرا بسيطا للنشاط في نظرة على الأقدام أو خلية تحميل عادة في نهاية نظرة التجميع يعمل جيدا، ويُخفي المؤشر عندما يصل مصدر البيانات إلى نهاية المحتوى المتاح.
إدارة المعلومات الأساسية
المكالمات الشبكية وتجهيز البيانات يجب أن يحدث دائماً على الاستفسارات الخلفية لا تحجب أبداً الخيط الرئيسي لتحميل البيانات، لأن هذا يؤثر مباشرة على الأداء المتقلب وقابلية الاستجابة للأشعة فوق البنفسجية.
حجم الخيوط
إن وضع الكثير من المواد في صفحة واحدة يمكن أن يبطل فوائد التحميل الكسول، لأن النظام يجب أن يجهز ويعرض دفعة كبيرة في آن واحد، حجم دفعة نموذجية يتراوح بين 20 و 50 بندا للمحتوى الموحد، أما بالنسبة للمحتوى المتحرك، فإن الخفافيش الصغيرة تساعد على الحفاظ على استخدام الذاكرة المنخفضة، ورصد أداء تطبيقك مع الأدوات لإيجاد الحجم الأمثل للدفعة في حالة استخدامك المحددة.
معالجة قضايا إدج في مكان كسول
وتُعزى عمليات التحميل الكسولة إلى سيناريوهات تعطل التدفق العادي للبيانات التي تُجلب وتُعرض.
مواقع الشبكة
ويمكن أن تفشل طلبات الشبكة بسبب مسائل الاتصال أو أخطاء الخواديم أو فترات التوقف، وعندما تفشل عملية الجلب، ينبغي أن يُظهر الطلب رسالة سهلة الاستعمال وأن يوفر آلية لإعادة الفحص، مع تجنب العودة تلقائياً في حلقة ضيقة، نظراً لأن هذا النطاق الترددي للنفايات وبطارية النفايات، وبدلاً من ذلك، انتظار أن يُضرب المستخدم مرة أخرى أو يُستخدم زراً للإعادة.
تعقب عدد حالات الفشل المتتالية، وبعد ثلاثة حالات فشل، توقف التحميل التلقائي، وتظهر خياراً صريحاً للإعادة إلى العمل، مما يحول دون دخول الطلب حلقة إخفاق صامتة تُحبط المستخدمين.
الوصول إلى نهاية المضمون
عندما لا تكون هناك صفحات أخرى لتحميل، يجب أن يشير الطلب بشكل جيد إلى نهاية البيانات، توقف عن الاستناد إلى طريقة التحميل، وإزالة أي مؤشرات تحميل، واختيارياً إظهار رسالة مثل "لقد وصلت إلى النهاية". بدون شرط الإنهاء هذا، سيستمر الطلب في تقديم طلبات لا تُحقق أو تعيد النتائج الفارغة، وتهدر الموارد.
المصدر: المعلومات الأساسية
وإذا كان مصدر بياناتكم يدعم عمليات الطوابق، مثل حذف الأصناف أو إعادة ترتيبها، فإن ضمان عدم إدخال التحميل الكسول للأجهزة غير الاتساق، مثلا، إذا حذف المستخدم الأصناف من مجموعة البيانات الحالية، فإن حسابات مسارات الرقم القياسي للحمولات المقبلة يجب أن تعكس العدد المستكمل، فالأجهزة المستخدمة حالياً تُعالج تلقائياً تعديلات على مسارات الرقم القياسي، ولكن تنفيذات المندوبة للبرمجيات تتطلب عناية يدوية.
اختبار تنفيذك لـ "الكسول"
التحقق من أن التحميل الكسول يعمل بشكل صحيح في جميع الظروف يتطلب مزيجا من اختبارات الوحدة، واختبارات التكامل، وتصنيف الأداء.
تبسيط مختلف شروط الشبكة
استخدام مكيف الشبكة في محفزات الإيوس أو في مواقع شبكة التليفزيون للاختبار في ظروف بطيئة ومقيدة وشديدة الدقة، وقد يؤدي التحميل الكسول الذي يعمل بشكل مثالي على اتصال سريع بالواي فاي إلى كشف قضايا التوقيت أو حالات الحمل المفقودة عندما تكون الشبكة بطيئة.
الذاكرة والأداء الاختباري
استخدام الأدوات، ولا سيما أدوات تخصيص الأماكن وحسابات الوقت، لرصد استخدام الذاكرة ومعدلات الإطار أثناء التمزق الشديد، والبحث عن ارتفاعات في الذاكرة تشير إلى وجود بيانات مفرطة في الذاكرة، وينبغي لنظام تحميل كسول جيد التنفيذ أن يحافظ على صورة مسطحة نسبيا للذاكرة حتى مع تلف المستعملين من خلال آلاف الأصناف.
اختبارات إدج
:: سيناريوهات الاختبار مثل التكسير السريع، والارتداد والخلف، والوصول إلى نهاية المحتوى يليها إعادة تحميل، والتأكد من أن مؤشرات التحميل تظهر وتختفي بشكل صحيح، وأن الأصناف المزدوجة لا تدرج، وأن هذا الخطأ يُثبت حلا ناجحا.
خاتمة
فالتحميل الكسول ليس مجرد أسلوب متقن، بل هو شرط أساسي لبناء تطبيقات نظام iOS التي تتعامل مع مجموعات كبيرة من البيانات بشكل مجزأ، وبحمل البيانات بشكل تدريجي، ورصد الوضع المائي للزجاج، وتعبئة أجهزة قياس حديثة مثل الضبط المسبق وتوافق النسيج، يمكن للمطورين أن يخلقوا آراء للجدول وجمعية لا تزال مستجيبة حتى لآلاف الأصناف.