الإعداد المسبق باستخدام Workbox

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

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

ملفات البيانات المخصّصة للتحميل المُسبَق

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

[{
  url: 'app.abcd1234.js'
}, {
  url: 'offline.svg',
  revision: '7836745f'
}, {
  url: 'index.html',
  revision: '518747aa'
}]

عند تثبيت الخدمة العاملة، يتم إنشاء ثلاثة إدخالات في ملف التخزين المؤقت في تخزين ملف التخزين المؤقت لكل عنوان URL من عناوين URL الثلاثة المدرَجة. تتضمّن مادة العرض الأولى معلومات تحديد الإصدار التي سبق أن تم تضمينها في عنوان URL الخاص بها (app هو اسم الملف الفعلي، ويحتوي .abcd1234 على معلومات تحديد الإصدار، قبل إضافة امتداد الملف .js مباشرةً). يمكن لأدوات الإنشاء في Workbox رصد ذلك واستبعاد حقل المراجعة. لا تتضمّن المادتان المعنيتان أي معلومات عن الإصدار في عناوين URL الخاصة بهما، لذا تنشئ أدوات الإنشاء في Workbox حقل revision منفصلاً يحتوي على تجزئة لمحتوى الملف العميق.

عرض الموارد التي تم تخزينها مؤقتًا

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

التعديلات الفعّالة

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

تعديلات على الموارد المخزّنة مسبقًا

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

إذا كان هناك عنوان URL حالي يحتوي على حقل مراجعة جديد، أو إذا تمت إضافة أي عناوين URL أو إزالتها من البيان، يعني ذلك أنّه يجب تنفيذ تعديلات في مشغّل الخدمة، وذلك كجزء من معالجَي الحدث install و activate. على سبيل المثال، إذا أجريت بعض التغييرات على موقعك الإلكتروني وأعددته، قد يكون أحدث بيان ذاكرة التخزين المؤقت المُسبَق قد أجرى التغيُّرات التالية:

[{
  url: 'app.ffaa4455.js'
}, {
  url: 'offline.svg',
  revision: '7836745f'
}, {
  url: 'index.html',
  revision: '518747aa'
}]

يُعلم كلّ من هذين التغييرَين عامل الخدمة بأنّه يجب إرسال طلبات جديدة لتعديل الإدخالات المخزّنة مؤقتًا سابقًا ('offline.svg' و'index.html') ووضع عناوين URL الجديدة في ذاكرة التخزين المؤقت ('app.ffaa4455.js')، بالإضافة إلى عمليات الحذف لتنظيف عناوين URL التي لم تعُد مستخدَمة ('app.abcd1234.js').

تجربة تثبيت حقيقية من "متجر التطبيقات"

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

عندما يُثبِّت المستخدم تطبيقًا، يتوقع ظهور كل جزء منه بسرعة، وليس فقط العروض التي انتقل إليها في السابق. وتوفّر ميزة "التخزين المؤقت المُسبَق" تجارب مماثلة في تطبيقات الويب.

ما هي مواد العرض التي يجب تخزينها مؤقتًا مسبقًا؟

يمكنك الرجوع إلى دليل تحديد ما يتم تحميله للحصول على تصوّر جيد عن عناوين URL التي يكون من المنطقي تخزينها مؤقتًا مسبقًا. والقاعدة العامة هي تخزين أي محتوى HTML أو JavaScript أو CSS مسبقًا يتم تحميله في وقت مبكر وضروري ل عرض البنية الأساسية لصفحة معيّنة.

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

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

تساعدك أدوات الإنشاء في Workbox من خلال إبلاغك بعدد العناصر في بيان التخزين المؤقت المُسبَق بالإضافة إلى الحجم الإجمالي لحمولة التخزين المؤقت المُسبَق.

يستفيد الزوّار المتكرّرون لتطبيق الويب من التكلفة الأولية لميزة التخزين المؤقت المُسبَق، لأنّ الميزة توفّر إمكانية تجنُّب الشبكة بسرعة، ما يؤدي إلى توفير النطاق الترددي بمرور الوقت.