يمكن الآن لموظفي خدمة الدعم الإضافية البقاء في الخدمة طالما أنّهم يتلقّون أحداثًا. ويزيد ذلك من موثوقية موظفي خدمات الدعم، ولكن هناك مشكلة يجب تجنُّبها.
اعتبارًا من الإصدار 110 من Chrome (الإصدار التجريبي اعتبارًا من 7 شباط/فبراير 2023)، تظلّ عمليات خدمة الإضافات نشطة ما دامت تتلقّى أحداثًا. يصحّح هذا الإجراء مشكلة في التوقيت في التنفيذ السابق لعمال خدمة الإضافات. كان من الممكن أن تحدث مهلات عندما تكون الأحداث الجديدة في قائمة انتظار الأحداث وأن تؤدي المهلات إلى اقتطاع العمل غير المتزامن. يزيل هذا التحسين الحد الأقصى لمدة خمس دقائق لعمال خدمة التوسيع.
توضّح هذه المقالة كيفية تغيُّر هذه السلوكيات.
الخلفية
تتصرّف خدمات مهام تمديد الويب في الغالب مثل خدمات مهام الويب، ولكن بالإضافة إلى أحداث خدمات مهام الويب، يمكن لخدمات مهام تمديد الويب أيضًا الاستماع إلى أحداث تمديد الويب. على الرغم من أنّ أحداث مشغّل الخدمة العادية تُمدّد مدة عمل مشغّل الخدمة، إلا أنّه قبل إصدار 110، كان هناك عدد قليل من أحداث منصّة الإضافات التي تحافظ على عمل مشغّل خدمة الإضافات.
عادةً ما يُنهي Chromium عامل الخدمة بعد استيفاء أحد الشروط التالية:
- لم يتلقّ العامل في الخدمة حدثًا لأكثر من ثلاثين ثانية، ولا تتوفّر مهام طويلة المدة غير مكتملة. إذا تلقّى عامل الخدمة حدثًا خلال ذلك الوقت، تتم إزالة موقّت الخمول.
- استغرقت مهمة طويلة التنفيذ أكثر من خمس دقائق لإكمالها ولم يتم استلام أي أحداث في آخر ثلاثين ثانية.
إنّ أحداث الخدمة الجديدة التي يتمّ تلقّيها قبل انتهاء صلاحية موقّت الخمول أو موقّت المهام التي تستغرق وقتًا طويلاً ستؤدي إلى إعادة ضبط الموقّتين وزيادة مدة عمل الخدمة.
لم ينطبق هذا السلوك على أحداث الإضافات. يمكن أن تُوقِظ أحداث الإضافة عامل خدمة الإضافة وتبقيه نشطًا إلى أن يكتمل الحدث، ولكن لا يمكنها تمديد موقّت الخمول الذي يبلغ ثلاثين ثانية. وهذا يعني بشكلٍ فعال أنّه يمكن إنهاء عمل مهام الخدمة في الإضافة في أي وقت بعد اكتمال آخر حدث في الإضافة، حتى إذا كان المتصفّح قد أرسل للتو حدثًا جديدًا إلى الإضافة.
التغييرات التي أُجريت
اعتبارًا من الإصدار 110 من Chrome، تُعيد جميع الأحداث ضبط موقّت الخمول ولن يحدث وقت الاستراحة في حالة توفّر أحداث في انتظار المراجعة. بعبارة أخرى، بافتراض عدم حدوث انقطاعات غير متوقّعة، سيظلّ عمال خدمة الإضافات نشطين عادةً ما داموا يعالجون الأحداث بشكل نشط. بالإضافة إلى ذلك، ستؤدي طلبات البيانات إلى واجهات برمجة تطبيقات Chrome الخاصة بالإضافة، مثل chrome.storage.local.get()
، إلى إعادة ضبط مهلة الخمول. وهذه القيود تحديدًا هي كالآتي:
- يتم إنهاء الخدمة بعد 30 ثانية من عدم النشاط. (يؤدي تلقّي حدث أو طلب بيانات من واجهة برمجة تطبيقات إضافة إلى إعادة ضبط هذا الموقّت).
- يتم إنهاء الخدمة إذا استغرق معالجة طلب واحد، مثل حدث أو طلب بيانات من واجهة برمجة التطبيقات، أكثر من 5 دقائق.
توفّر بعض واجهات برمجة التطبيقات، مثل المراسلة المدمجة، ميزة "إبقاء الاتصال مفتوحًا" قوية تلغي كلا الموقّتين.
ما زلنا نعمل على ضمان إنهاء عمل عمال الخدمة الإضافية متى أمكن ذلك، بدون إيقاف العمل الذي يستغرق وقتًا طويلاً. يجب أن يراعي خبراء خدمة الإرشاد المهتمون بالموارد دائمًا استخدام الموارد بكفاءة. بالإضافة إلى ذلك، يجب أن تستعد الإضافات للإنهاء غير المتوقّع من خلال الاحتفاظ بالحالة. ويساعد ذلك في تجنُّب الأحداث غير المتوقّعة، مثل إغلاق المتصفّح قسرًا من قِبل المستخدم.
صورة بواسطة Paula Guerreiro على Unsplash