البرمجة

تحسين أداء Callback onAuthStateChanged في Firebase

بعد انتقالنا من استخدام خادم NodeJS الخاص بنا الذي يعمل بواسطة Express إلى Firebase في تطبيقاتنا، لاحظنا عيبًا رئيسيًا وهو مدة الوقت اللازمة لاستلام حالة المصادقة الأولية من قبل العميل.

عندما يتم فتح تطبيقي، أقوم على الفور بتسجيل callback onAuthStateChanged للبدء في الاستماع للتغييرات في حالة المصادقة، بحيث يمكنني توجيه المستخدم إما إلى محطته الشخصية أو شاشة المصادقة.

المشكلة هي أنه في بعض الأحيان يستغرق ذلك بضعة ميلي ثوانٍ فقط، بينما في أوقات أخرى (بغض النظر عن الاتصال بالإنترنت) يستغرق ذلك من 20+ ثانية، مما يتسبب في تجربة مستخدم سيئة للغاية.

نحن نستخدم واجهة برمجة التطبيقات الويب Firebase على مكون UIWebView.

لقد اختبرت هذا على شبكات 3G و 4G و LTE و Wifi وهو عشوائي تمامًا. في بعض الأحيان يتم التحميل بسرعة مذهلة. وفي بعض الأحيان يكون بطيئًا لدرجة أنني أشك في موثوقية الخدمة.

قد يُجادل البعض بأن هذا بسبب البيانات التي يجب علينا تنزيلها، لكن الـ 20-30 ثانية التي ننتظرها تأتي قبل أن نحاول حتى سحب البيانات من الخادم. هذا فقط للحصول على حالة المصادقة الأولية. نحن نستخدم فقط موفري البريد الإلكتروني.

هل يعرف أحد ما يمكننا فعله لتحسين هذا؟ في المتوسط، يتم تعريف callback onAuthStateChanged بعد 562ms من تنفيذ التطبيق. بعد ذلك، يمكن أن يستغرق الأمر في بعض الأحيان 20-200ms (متوسط ​​التأخير) وفي بعض الأحيان يستغرق 20000ms+.

المزيد من المعلومات

بالطبع، هناك عدة عوامل قد تؤثر على أداء callback onAuthStateChanged في Firebase وقت الاستجابة لتغييرات حالة المصادقة. دعنا نلقي نظرة على بعض العوامل التي يمكن أن تسهم في هذا الأداء المتذبذب:

  1. حالة الشبكة: قد يكون أداء Firebase متأثرًا بحالة الشبكة، حيث قد تتغير سرعة الاتصال بالإنترنت واستقرارها من وقت لآخر، مما يؤثر على سرعة استجابة الطلبات إلى خوادم Firebase.

  2. أداء الخوادم: قد تكون هناك عوامل خارجة عن نطاق التحكم مثل حمولة الخوادم في Firebase. إذا كانت الخوادم مشغولة بشكل كبير، فقد يؤدي ذلك إلى زيادة في أوقات الاستجابة.

  3. التهيئة الصحيحة للاستدعاءات: قد تكون هناك بعض التحسينات التي يمكن تطبيقها على استدعاءاتك لـ onAuthStateChanged. على سبيل المثال، يجب أن يتم استدعاء هذا الcallback بشكل فعال بحيث لا يتسبب في تحميل غير ضروري للموارد.

  4. تحسينات التصميم: يمكن أن تؤدي بعض تحسينات التصميم في التطبيق إلى تحسين أداء Firebase. على سبيل المثال، يمكن تقليل الحاجة إلى تنزيل البيانات عند بدء التطبيق من خلال استخدام طرق تسجيل الدخول المؤقتة أو تحميل البيانات بناءً على الطلب.

  5. تحديثات Firebase والتحسينات: يجب دائمًا متابعة التحديثات الصادرة من Firebase وتطبيقها بانتظام، حيث قد تحتوي هذه التحديثات على تحسينات في الأداء وإصلاحات للمشاكل المعروفة.

  6. تسجيل الخطأ وتحليله: يمكن أن يساعد تسجيل الأخطاء وتحليلها في تحديد أي مشاكل تقنية أو استدعاءات غير فعالة قد تكون تسبب في بطء أداء onAuthStateChanged.

باختصار، يمكن تحسين أداء onAuthStateChanged في Firebase من خلال مراقبة عوامل متعددة وتطبيق تحسينات في التصميم والتهيئة، بالإضافة إلى متابعة تحديثات Firebase وتحليل أي مشاكل تقنية تنشأ.

زر الذهاب إلى الأعلى