الإعداد المسبق باستخدام 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 من خلال إبلاغك بعدد العناصر في بيان التخزين المؤقت المُسبَق بالإضافة إلى الحجم الإجمالي لحمولة التخزين المؤقت المُسبَق.

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