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

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

Joe Medley
Joe Medley

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

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

الخلفية

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

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

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

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

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

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

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

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

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

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

صورة من إنشاء باولا غيريرو على موقع Unقلاش