مدة أطول لمشغِّلات خدمات الإضافات

يمكن الآن للعاملين في خدمات الإضافات البقاء على قيد الحياة طالما أنهم يتلقون الأحداث. وهذا بدوره يزيد من موثوقية موظفي خدمات الإضافات، ولكن مع خطأ يجب تجنبه.

جو ميدلي
جو ميدلي

اعتبارًا من إصدار Chrome 110 (الإصدار التجريبي اعتبارًا من 7 شباط (فبراير) 2023)، سيظل عاملو خدمات الإضافات على عملهم طوال فترة تلقّيهم الأحداث. يصحِّح ذلك مشكلة متعلّقة بالتوقيت في التنفيذ السابق للعاملين في خدمات الإضافات. وكان من الممكن أن تحدث المهلات عندما تكون الأحداث الجديدة في قائمة انتظار الحدث وأن يتم تطبيق المهلات لاقتطاع العمل غير المتزامن. ويؤدي هذا التحسين إلى إزالة الحد الأقصى لمدة العمل الشاق الذي يبلغ خمس دقائق بالنسبة إلى العاملين في خدمات التمديد.

توضِّح هذه المقالة كيفية تغيُّر هذه السلوكيات.

الخلفية

يتصرف موظفو خدمات الإضافات غالبًا مثل موظفي خدمات الويب، ولكن بالإضافة إلى أحداث مشغّلي الخدمات، يمكن للعاملين في خدمات الإضافات أيضًا الاستماع إلى أحداث الإضافات. على الرغم من أنّ أحداث مشغّل الخدمات العادية تُطيل مدة عمل عامل الخدمة، فإنّه قبل إصدار 110 لم يكُن هناك سوى عدد قليل من أحداث الأنظمة الأساسية للإضافات التي ظلّت عامل خدمات الإضافات نشطًا.

عادةً ما ينهي Chromium مشغّل الخدمات بعد استيفاء أحد الشروط التالية:

  • لم يتلق مشغّل الخدمات حدثًا لمدة تزيد عن ثلاثين ثانية وليست هناك مهام معلقة تستغرق وقتًا طويلاً قيد التنفيذ. وإذا تلقّى عامل الخدمة حدثًا خلال هذه الفترة، تتم إزالة موقّت عدم النشاط.
  • استغرق إكمال مهمة تستغرق وقتًا طويلاً أكثر من خمس دقائق، ولم يتم تلقّي أي أحداث خلال آخر ثلاثين ثانية.

إنّ أحداث مشغّل الخدمات الجديدة التي يتم استلامها قبل انتهاء مهلة وضع عدم النشاط أو موقّت المهام التي تستغرق وقتًا طويلاً ستؤدي إلى إعادة ضبط الموقّتات وإطالة عمر عامل الخدمة.

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

التغييرات التي أُجريت

واعتبارًا من الإصدار 110 من Chrome، تعيد جميع الأحداث ضبط موقّت وضع عدم النشاط ولن تحدث مهلة عدم النشاط إذا كانت هناك أحداث معلّقة. بعبارة أخرى، بافتراض عدم حدوث أي انقطاعات غير متوقعة في الخدمة، سيظل العاملون في خدمات الإضافات يعملون عادةً ما داموا يعالجون الأحداث بشكل نشط. بالإضافة إلى ذلك، ستؤدي الطلبات الواردة إلى واجهات برمجة تطبيقات Chrome الخاصة بالإضافات، مثل chrome.storage.local.get()، إلى إعادة ضبط مهلة عدم النشاط. وهذه القيود تحديدًا هي كالآتي:

  • ينتهي عامل الخدمة بعد 30 ثانية من توقف النشاط. (يؤدي تلقّي حدث أو استدعاء واجهة برمجة تطبيقات إضافة إلى إعادة ضبط هذا الموقّت).
  • يتم إنهاء مشغّل الخدمة إذا استغرقت معالجة طلب واحد، مثل حدث أو طلب بيانات من واجهة برمجة التطبيقات، أكثر من 5 دقائق.

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

ما زلنا نعمل على ضمان إنهاء العمل بالعاملين في مجال خدمات الإضافات عندما يكون ذلك ممكنًا، بدون إيقاف العمل الطويل الأمد. يجب أن يقدم العاملون في خدمات الإضافات المهتمين بالموارد دائمًا ما ينتج عن ذلك عندما يكون ذلك ممكنًا. بالإضافة إلى ذلك، من المفترض أن تستعد الإضافات للإنهاء غير المتوقّع من خلال استمرارها. ويحمي هذا الإجراء من الأحداث غير المتوقعة، مثل فرض إغلاق المتصفّح من قِبل المستخدم.

صورة باولا غيريرو على قناة Unsplash