المقدمة: الكابوس التقني في تطبيقات المتاجر
عند بناء تطبيق متعدد التجار (Multi-Vendor App) مثل Trendo، واجهنا تحدياً كبيراً: الصفحة الرئيسية تحتوي على مئات المنتجات، وكل منتج له صور عالية الدقة. الطريقة التقليدية في عرض الصور (Image.network) كانت تسبب كارثتين:
-
بطء في التمرير (Jank): التطبيق يتقطع أثناء النزول للأسفل.
-
استهلاك البيانات: يتم تحميل الصورة في كل مرة يظهر فيها المنتج، مما يستنزف إنترنت المستخدم.
في Giturn، الحلول الوسطى ليست خياراً. إليك كيف قمنا بحل المشكلة هندسياً.
الخطوة 1: التخزين المؤقت الذكي (Smart Caching)
بدلاً من تحميل الصورة من السرفر في كل مرة، استخدمنا مكتبة cached_network_image. هذه المكتبة تقوم بتحميل الصورة مرة واحدة وحفظها في ذاكرة الهاتف (Cache).
في المرة القادمة التي يفتح فيها المستخدم التطبيق، تظهر الصورة فوراً حتى بدون إنترنت!
مقتطف الكود (Code Snippet):
Dart
// مثال مبسط لكيفية عرض صور المنتجات في Trendo
CachedNetworkImage(
imageUrl: "https://api.trendo.app/products/image1.jpg",
placeholder: (context, url) => CircularProgressIndicator(), // يظهر أثناء التحميل
errorWidget: (context, url, error) => Icon(Icons.error), // في حال فشل التحميل
fit: BoxFit.cover,
memCacheWidth: 200, // سر الأداء: تقليل حجم الصورة في الذاكرة
)
نصيحة محترف: لاحظ استخدام
memCacheWidth. نحن نخبر التطبيق: “حتى لو كانت الصورة الأصلية 4K، قم بتخزين نسخة صغيرة تناسب شاشة الموبايل فقط”. هذا وفر 70% من استهلاك الذاكرة (RAM).
الخطوة 2: التحميل الكسول (Pagination & Lazy Loading)
من الخطأ تحميل 1000 منتج دفعة واحدة. قمنا بتطبيق نظام Pagination في الـ Backend والـ Mobile. التطبيق يطلب أول 10 منتجات فقط. وعندما يقترب المستخدم من نهاية القائمة، يطلب الـ 10 التالية تلقائياً.
الخطوة 3: ضغط الصور بصيغة WebP
في لوحة تحكم التاجر التي برمجناها، عندما يرفع التاجر صورة منتج بصيغة PNG أو JPEG حجمها 2 ميجابايت، يقوم نظامنا السحابي (Backend) تلقائياً بتحويلها إلى صيغة WebP.
-
النتيجة: الصورة التي كان حجمها 2MB أصبحت 150KB فقط، بنفس الجودة!
النتيجة النهائية في Trendo
بعد تطبيق هذه التحسينات:
-
أصبح التمرير (Scrolling) ناعماً جداً (60 FPS).
-
انخفض استهلاك بطارية المستخدم أثناء التسوق.
-
زادت نسبة بقاء المستخدمين في التطبيق لأن الصور تظهر بسرعة.
الخلاصة
الأداء ليس “ميزة إضافية”، بل هو أساس التجربة. في Giturn، نحن نهتم بما يحدث “تحت الغطاء” لنضمن لعملائنا تطبيقات تنافس الكبار.
هل تبني تطبيقاً وتواجه مشاكل في الأداء؟ [تواصل معنا لنراجع كود تطبيقك]
شركة جيتورن افضل شركة برمجة في العراق
Info@giturn.com
اترك تعليقاً