يقدم عاملو الخدمة فائدة مذهلة، ولكن قد يكون من الصعب التعامل معهم في البداية. يجعل Workbox عاملي الخدمة أسهل في الاستخدام. ومع ذلك، ونظرًا لأن عمال الخدمة يحلون المشكلات الصعبة، فإن أي تجريد لهذه التكنولوجيا سيكون أمرًا صعبًا دون فهمها. وبالتالي، ستتناول هذه الأجزاء القليلة الأولى من الوثائق تلك التقنية الأساسية قبل الدخول في تفاصيل Workbox.
لعرض قائمة حالية بعاملي الخدمات، أدخِل chrome://serviceworker-internals/
في شريط العناوين.
ما الذي يقدّمه عاملو الخدمات؟
عاملو الخدمة هم مواد عرض JavaScript متخصّصة تعمل كخوادم وكيلة بين متصفِّحات الويب وخوادم الويب. تهدف هذه التطبيقات إلى تحسين الموثوقية من خلال إتاحة الوصول بلا اتصال بالإنترنت، بالإضافة إلى تعزيز أداء الصفحة.
إنّ مراحل النشاط التي يتم تطويرها تدريجيًا شبيهة بالتطبيقات
يُعد عاملو الخدمة بمثابة تحسين للمواقع الإلكترونية الحالية. وهذا يعني أنّه في حال انتقال مستخدمي المتصفّحات التي لا تتوافق مع مشغّلي الخدمات إلى المواقع الإلكترونية التي تستخدمها، لن يتم تعطُّل أي وظائف أساسية. هذا ما تدور حوله الويب.
يعمل مشغّلو الخدمات على تحسين المواقع الإلكترونية تدريجيًا من خلال مراحل نشاط تشبه التطبيقات الخاصة بالنظام الأساسي. فكِّر في ما يحدث عند تثبيت تطبيق محلي من أحد متاجر التطبيقات:
- يتم تقديم طلب لتنزيل التطبيق.
- يتم تنزيل التطبيق وتثبيته.
- التطبيق جاهز للاستخدام ويمكن تشغيله.
- يتم تحديث التطبيق لإتاحة الإصدارات الجديدة.
دورة حياة عامل الخدمة متشابهة، ولكن مع نهج التحسين التدريجي. في الزيارة الأولى إلى صفحة ويب تثبِّت مشغّل خدمات جديد، توفّر الزيارة الأولية إلى الصفحة وظائفها الأساسية أثناء تنزيل مشغّل الخدمات. بعد تثبيت مشغّل الخدمات وتنشيطه، يتحكم في الصفحة لتحسين موثوقية وسرعة.
الوصول إلى واجهة برمجة تطبيقات التخزين المؤقت المستندة إلى JavaScript
تُعدّ واجهة Cache
من الجوانب التي لا غنى عنها في تكنولوجيا مشغّل الخدمات،
وهي آلية للتخزين المؤقت منفصلة تمامًا عن ذاكرة التخزين المؤقت HTTP.
يمكن الوصول إلى الواجهة Cache
ضمن نطاق مشغّل الخدمات وضمن نطاق سلسلة التعليمات الرئيسية.
وهذا يفتح الكثير من الاحتمالات لإجراء تفاعلات قائمة على المستخدم مع مثيل Cache
.
تتأثر ذاكرة التخزين المؤقت HTTP بتوجيهات التخزين المؤقت المحدّدة في عناوين HTTP،
إلا أنّ واجهة Cache
قابلة للبرمجة من خلال JavaScript.
هذا يعني أن التخزين المؤقت للاستجابات لطلبات الشبكة يمكن أن يستند إلى أفضل منطق لموقع ويب معين.
مثلاً:
- تخزين الأصول الثابتة في ذاكرة التخزين المؤقت عند الطلب الأول لها وعرضها فقط من ذاكرة التخزين المؤقت لكل طلب لاحق
- تخزين ترميز الصفحة في ذاكرة التخزين المؤقت، ولكن لا يتم عرض الترميز من ذاكرة التخزين المؤقت إلا في سيناريوهات عدم الاتصال بالإنترنت.
- اعرض ردودًا قديمة لمواد عرض معينة من ذاكرة التخزين المؤقت، ولكن حدِّثها من الشبكة في الخلفية.
- ويمكنك بث المحتوى الجزئي من الشبكة وتجميعه باستخدام هيكل تطبيق من ذاكرة التخزين المؤقت لتحسين الأداء الإدراكي.
يُعد كلٌّ من هذه الخطوات مثالاً على استراتيجية التخزين المؤقت. تساعد استراتيجيات التخزين المؤقت على إتاحة التجارب بلا اتصال بالإنترنت، ويمكنها تقديم أداء أفضل عن طريق تنفيذ عمليات تحقّق إعادة التحقق في وقت الاستجابة السريع أثناء تشغيل ذاكرة التخزين المؤقت لـ HTTP. وقبل الانتقال إلى Workbox، يمكنك الاطّلاع على بعض استراتيجيات التخزين المؤقت والرموز البرمجية التي تساعد في عملها.
واجهة برمجة تطبيقات غير متزامنة ومستندة إلى الأحداث
يعد نقل البيانات عبر الشبكة غير متزامن في حد ذاته. يستغرق طلب مادة عرض بعض الوقت والرد على هذا الطلب وتنزيل الاستجابة. الوقت المستغرق متنوع وغير محدد. يتعامل عاملو الخدمة مع هذه عدم التزامن من خلال واجهة برمجة تطبيقات تعتمد على الأحداث، وذلك باستخدام عمليات الاستدعاء لأحداث مثل:
- عندما يجري مشغّل الخدمات عملية تثبيت.
- عندما يفعّل مشغّل الخدمات.
- عندما يكتشف عامل الخدمة طلب شبكة.
يمكن تسجيل الأحداث باستخدام addEventListener
API مألوفة.
من المحتمل أن تتفاعل كل هذه الأحداث مع واجهة Cache
.
وعلى وجه الخصوص، تُعد القدرة على تنفيذ عمليات الاستدعاء عند إرسال طلبات الشبكة أمرًا حيويًا لتوفير الموثوقية والسرعة المطلوبتين.
يتضمّن تنفيذ عمل غير متزامن في JavaScript استخدام
الوعود.
وبما أنّ الوعود تستند أيضًا إلى async
وawait
، يمكن استخدام ميزات JavaScript هذه لتبسيط رمز مشغّل الخدمات (وWorkbox!) لتقديم تجربة أفضل للمطوّرين.
التخزين المؤقت والتخزين المؤقت لبيئة التشغيل
يتضمّن التفاعل بين مشغّل الخدمات والمثيل Cache
مفهومَين مختلفَين للتخزين المؤقت، وهما التخزين المؤقت والتخزين المؤقت لوقت التشغيل.
وكلٌّ من هذه الإجراءات يُعد أمرًا أساسيًا للفوائد التي يمكن أن يوفرها عامل الخدمة.
التخزين المسبق هي عملية تخزين الأصول مؤقتًا،
وعادةً ما تحدث أثناء تثبيت عامل الخدمة.
من خلال التخزين المؤقت، يمكن تنزيل مواد العرض والمواد الثابتة الأساسية اللازمة للوصول بلا إنترنت وتخزينها في مثيل Cache
.
ويعمل هذا النوع من التخزين المؤقت أيضًا على تحسين سرعة الصفحة إلى الصفحات اللاحقة التي تتطلّب مواد العرض المخزّنة مسبقًا.
التخزين المؤقت لوقت التشغيل يحدث عند تطبيق استراتيجية تخزين مؤقت على مواد العرض بالشكل الذي تطلبه منها الشبكة أثناء وقت التشغيل. ويكون هذا النوع من التخزين المؤقت مفيدًا لأنه يضمن الوصول بلا اتصال بالإنترنت إلى الصفحات ومواد العرض التي زارها المستخدم من قبل.
عند الجمع بين هذه المناهج لاستخدام واجهة Cache
في عامل خدمات، فإنها تحقق فائدة كبيرة لتجربة المستخدم، كما تتيح تصرّفات شبيهة بالتطبيق لصفحات الويب العادية.
العزلة من سلسلة التعليمات الرئيسية
تمثّل حالة أداء JavaScript تحديًا متطورًا للويب، ومن منظور المستخدم، تعتمد هذه الحالة على إمكانات الجهاز وإمكانية الوصول إلى إنترنت عالي السرعة. كلما زاد استخدام JavaScript، أصبح من الصعب إنشاء مواقع ويب سريعة تقدم تجارب مبهجة للمستخدمين.
يشبه عاملو الخدمات عاملي الويب في تنفيذ كل الأعمال التي يؤدونها ضمن سلاسل المحادثات الخاصة بهم. ويعني هذا أنّ مهام عاملي الخدمة لن تتنافس لجذب الانتباه مع المهام الأخرى في سلسلة المحادثات الرئيسية. عاملو الخدمة هم المستخدم أولاً من حيث التصميم!
الطريق إلى الأمام
هذه الوثائق هي مجرد نظرة عامة. هناك بعض المواضيع الإضافية التي يمكن التطرّق إليها بشأن مشغّلي الخدمات قبل الحديث عن Workbox بشكل صحيح، ولكن لا داعي للقلق: من خلال الفهم القوي للعاملين في الخدمات، سيصبح استخدام Workbox تجربة أسهل وأكثر إنتاجية.