تحسين تجربة تطوير مشغّلي الخدمات

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

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

استثناءات التطوير المحلي

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

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

ويمكن بدلاً من ذلك أن تطلب من المتصفِّح إجراء استثناءات لاختبار مشغّل الخدمات. بالنسبة إلى Chrome، انتقِل إلى chrome://flags/#unsafely-treat-insecure-origin-as-secure وحدِّد الأصول غير الآمنة للتعامل معها كمصادر آمنة. يوفّر متصفّح Firefox طريقة لاختبار مشغّلي الخدمة على المصادر غير الآمنة من خلال الإعداد devtools.serviceWorkers.testing.enabled في about:config.

وسائل المساعدة في تطوير مشغّلي الخدمات

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

إلى حد بعيد، الطريقة الأكثر فعالية لاختبار مشغّل الخدمات هي الاعتماد على نوافذ التصفّح بخصوصية تامّة، مثل نوافذ التصفّح المتخفي في Chrome أو ميزة "التصفّح بخصوصية تامّة" في Firefox. في كل مرة تفتح فيها نافذة تصفّح بخصوصيّة تامّة، تبدأ من جديد. ما مِن مشغّلي خدمة نشطين وما مِن أجهزة Cache مفتوحة. سلسلة الإجراءات لهذا النوع من الاختبارات هي:

  1. افتح نافذة تصفّح بخصوصيّة تامّة.
  2. انتقِل إلى صفحة تُسجِّل أحد مشغّلي الخدمات.
  3. تحقَّق مما إذا كان عامل الخدمة يعمل على النحو المتوقّع.
  4. أغلق نافذة التصفح المتخفي.
  5. والتكرار.

ومن خلال هذه العملية، تحاكي دورة حياة عامل الخدمة بإحكام.

ويمكن أن تساعد أدوات الاختبار الأخرى المتوفّرة في لوحة تطبيق "أدوات مطوري البرامج في Chrome" على تعديل دورة حياة مشغّل الخدمات بعدّة طرق.

لوحة تطبيق Chrome DevTools

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

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

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

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

Shift وإعادة التحميل

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

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

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

فحص محتوى ذاكرة التخزين المؤقت

من الصعب معرفة ما إذا كانت استراتيجية التخزين المؤقت تعمل على النحو المنشود إذا تعذّر فحص ذاكرة التخزين المؤقت. بالتأكيد، يمكن فحص ذاكرة التخزين المؤقت في الرمز، ولكن هذه عملية تتضمن برامج تصحيح الأخطاء و/أو عبارات console عندما تكون الأداة المرئية أكثر ملاءمة للمهمة. توفّر لوحة التطبيقات في "أدوات مطوري البرامج في Chrome" لوحة فرعية لفحص محتوى مثيلات Cache.

فحص ذاكرة التخزين المؤقت في "أدوات مطوري البرامج"

تسهّل هذه اللوحة الفرعية تطوير مشغّل الخدمات من خلال توفير وظائف مثل:

  • الاطّلاع على أسماء Cache مثيل
  • إمكانية فحص نص الاستجابة لمواد العرض المخزَّنة مؤقتًا وعناوين الاستجابة المرتبطة بها
  • يمكنك استبعاد عنصر واحد أو أكثر من ذاكرة التخزين المؤقت أو حتى حذف نُسخ Cache بالكامل.

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

محاكاة حصة مساحة تخزين

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

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

عارض استخدام مساحة التخزين
عارض استخدام مساحة التخزين في لوحة "التطبيقات" ضمن "أدوات مطوري البرامج في Chrome" يتم هنا ضبط حصة مساحة تخزين مخصّصة.

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

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

تطوير أسهل وإنتاجية أفضل

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