التخزين المؤقت لعامل الخدمات والتخزين المؤقت باستخدام بروتوكول HTTP

مزايا وعيوب استخدام منطق انتهاء صلاحية ثابت أو مختلف في طبقات ذاكرة التخزين المؤقت لخدمة Worker وذاكرة التخزين المؤقت لبروتوكول HTTP

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

  • حالات استخدام ذاكرة التخزين المؤقت لعامل الخدمة وذاكرة التخزين المؤقت لبروتوكول HTTP والاختلافات بينهما
  • إيجابيات وسلبيات الإستراتيجيات المختلفة لانتهاء صلاحية التخزين المؤقت لعاملي الخدمات مقارنةً بالاستراتيجيات العادية استراتيجيات التخزين المؤقت لـ HTTP.

نظرة عامة على عملية التخزين المؤقت

على مستوى عالٍ، يتبع المتصفح ترتيب التخزين المؤقت أدناه عندما يطلب موردًا:

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

مسار التخزين المؤقت

طبقات التخزين المؤقت

التخزين المؤقت لعاملي الخدمات

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

التحكّم في ذاكرة التخزين المؤقت لخدمة Worker

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

مخطّط بياني يوضّح كيفية اعتراض مشغّلات الخدمات لطلبات HTTP

ننصح بشدة باستخدام Workbox لتجنُّب إعادة اختراع العجلة. على سبيل المثال، يمكنك تسجيل مسارات عناوين URL للموارد باستخدام سطر واحد من رمز التعبير العادي

import {registerRoute} from 'workbox-routing';

registerRoute(new RegExp('styles/.*\\.css'), callbackHandler);

استراتيجيات التخزين المؤقت لعمال الخدمات وحالات الاستخدام

يوضِّح الجدول التالي استراتيجيات التخزين المؤقت الشائعة لعامل الخدمة والحالات التي تكون فيها كل استراتيجية مفيدة.

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

مزايا إضافية لتخزين الخدمة

بالإضافة إلى التحكّم الدقيق لمنطق التخزين المؤقت، يوفّر التخزين المؤقت لعاملي الخدمات أيضًا ما يلي:

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

التخزين المؤقت لبروتوكول HTTP

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

يعني استخدام ميزة التخزين المؤقت في HTTP الاعتماد على الخادم لتحديد وقت تخزين مورد معيّن مؤقتًا ومدّة ذلك.

التحكّم في انتهاء صلاحية ذاكرة التخزين المؤقت في HTTP باستخدام عناوين استجابة HTTP

عندما يستجيب الخادم لطلب متصفح لأحد الموارد، يستخدم الخادم عناوين استجابة HTTP إعلام المتصفح بالمدة التي يجب أن يخزّنها المورد في ذاكرة التخزين المؤقت. اطّلِع على رؤوس الاستجابة: ضبط ملف تكوين الخادم لمعرفة المزيد.

استراتيجيات التخزين المؤقت لبروتوكول HTTP وحالات الاستخدام

إنّ ميزة التخزين المؤقت لبروتوكول HTTP أبسط بكثير من ميزة التخزين المؤقت لمشغّل الخدمة، لأنّ ميزة التخزين المؤقت لبروتوكول HTTP لا تتعامل إلا مع منطق انتهاء صلاحية المورد المستنِد إلى الوقت (TTL). عرض ما هي قيم عنوان الاستجابة التي يجب استخدامها؟ والملخّص للاطّلاع على مزيد من المعلومات حول استراتيجيات التخزين المؤقت على عنوان HTTP.

تصميم منطق انتهاء صلاحية ذاكرة التخزين المؤقت

يوضّح هذا القسم مزايا وعيوب استخدام منطق انتهاء صلاحية متّسق على مستوى ذاكرة التخزين المؤقت لعامل الخدمة وطبقات ذاكرة التخزين المؤقت لبروتوكول HTTP، بالإضافة إلى مزايا وعيوب منطق انتهاء الصلاحية المنفصل على مستوى هذه الطبقات.

يوضح الخطأ التوضيحي أدناه طريقة عمل التخزين المؤقت لعامل الخدمة والتخزين المؤقت عبر بروتوكول HTTP سيناريوهات مختلفة:

منطق انتهاء صلاحية متّسق لجميع طبقات ذاكرة التخزين المؤقت

لتوضيح الإيجابيات والسلبيات، سننظر في 3 سيناريوهات: على المدى الطويل والمتوسط والقصير.

السيناريوهات التخزين المؤقت طويل المدى التخزين المؤقت على المدى المتوسط التخزين المؤقت على المدى القصير
استراتيجية التخزين المؤقت لمشغّل الخدمات ذاكرة التخزين المؤقت، الرجوع إلى الشبكة Stale-while-revalidate استخدام الشبكة لذاكرة التخزين المؤقت
مدة بقاء ذاكرة التخزين المؤقت لمشغّل الخدمة 30 يومًا يوم واحد 10 دقائق
الحد الأقصى لعمر ذاكرة التخزين المؤقت لبروتوكول HTTP 30 يومًا يوم واحد 10 دقائق

السيناريو: التخزين المؤقت على المدى الطويل (ذاكرة التخزين المؤقت، الرجوع إلى الشبكة)

  • عندما يكون مورد مخزَّن مؤقتًا صالحًا (<= 30 يومًا): يعرض عامل الخدمة ذاكرة التخزين المؤقت على الفور دون الانتقال إلى الشبكة.
  • عند انتهاء صلاحية مورد محفوظ في ذاكرة التخزين المؤقت (> 30 يومًا): ينتقل عامل الخدمة إلى الشبكة ل retrieving the resource. لا يتضمّن المتصفّح نسخة من المورد في ذاكرة التخزين المؤقت لبروتوكول HTTP، لذا ينتقل إلى جهة الخادم للحصول على المورد.

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

السيناريو: التخزين المؤقت على المدى المتوسط (القِدم أثناء إعادة التحقق)

  • عندما يكون المورد المخزّن مؤهّلاً (<= يوم واحد): يعرض عامل الخدمة المورد المُخزّن على الفور، وينتقل إلى الشبكة لتحميل المورد. يحتوي المتصفّح على نسخة من المورد في ذاكرة التخزين المؤقت لبروتوكول HTTP، لذا يعرض هذه النسخة لمشغّل الخدمة.
  • عند انتهاء صلاحية مورد مخزَّن مؤقتًا (> يوم واحد): يعرض عامل الخدمة ذاكرة التخزين المؤقت على الفور، وينتقل إلى الشبكة لجلب المورد. لا يحتوي المتصفح على من المورد في ذاكرة التخزين المؤقت لـ HTTP، لذلك ينتقل من جانب الخادم لجلب المورد.

السلبيات: يتطلب عامل الخدمة تنشيطًا إضافيًا لذاكرة التخزين المؤقت لتجاوز ذاكرة التخزين المؤقت HTTP في من أجل تحقيق أقصى استفادة من "إعادة التحقق" .

السيناريو: التخزين المؤقت على المدى القصير (الشبكة تعود إلى ذاكرة التخزين المؤقت)

  • عندما يكون المورد المخزّن مؤهّلاً (<= 10 دقائق): ينتقل عامل الخدمة إلى الشبكة لاسترداد المورد. يحتوي المتصفّح على نسخة من المورد في ذاكرة التخزين المؤقت لبروتوكول HTTP، لذا يعرضه على مشغّل الخدمة بدون الانتقال إلى الخادم.
  • عند انتهاء صلاحية مورد مخزَّن مؤقتًا (> 10 دقائق): يعرض عامل الخدمة ذاكرة التخزين المؤقت. على الفور، وينتقل إلى الشبكة لجلب المورد. لا يحتوي المتصفّح على نسخة من المورد في ذاكرة التخزين المؤقت لبروتوكول HTTP، لذا ينتقل إلى الخادم لتحميل المورد.

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

مشغّل الخدمات في جميع الحالات

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

منطق مختلف لانتهاء صلاحية ذاكرة التخزين المؤقت في طبقتَي ذاكرة التخزين المؤقت لعامل الخدمة وHTTP

لتوضيح الإيجابيات والسلبيات، سنعيد النظر مجددًا على المدى الطويل والمتوسط والقصير والسيناريوهات.

السيناريوهات التخزين المؤقت طويل المدى التخزين المؤقت على المدى المتوسط التخزين المؤقت على المدى القصير
استراتيجية التخزين المؤقت لمشغّل الخدمات ذاكرة التخزين المؤقت، الرجوع إلى الشبكة Stale-while-revalidate استخدام الشبكة لذاكرة التخزين المؤقت
مدة بقاء ذاكرة التخزين المؤقت لمشغّل الخدمة 90 يومًا 30 يومًا يوم واحد
الحد الأقصى لعمر ذاكرة التخزين المؤقت لبروتوكول HTTP 30 يومًا يوم واحد 10 دقائق

السيناريو: التخزين المؤقت على المدى الطويل (التخزين المؤقت، الرجوع إلى الشبكة)

  • عندما يكون المرجع المخزّن مؤقتًا صالحًا في ذاكرة التخزين المؤقت لمشغّل الخدمة (<= 90 يومًا): يعرض مشغّل الخدمة المرجع المخزّن مؤقتًا على الفور.
  • عند انتهاء صلاحية مورد مخزَّن مؤقتًا في ذاكرة التخزين المؤقت لمشغّل الخدمات (> 90 يومًا): الخدمة إلى الشبكة لجلب المورد. لا يحتوي المتصفّح على نسخة من المورد في ذاكرة التخزين المؤقت لـ HTTP، لذلك ينتقل من جانب الخادم.

الإيجابيات والسلبيات

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

السيناريو: التخزين المؤقت على المدى المتوسط (Stale-while-revalidate)

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

الإيجابيات والسلبيات

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

السيناريو: التخزين المؤقت على المدى القصير (الشبكة تعود إلى ذاكرة التخزين المؤقت)

  • عندما يكون مورد مخزَّن مؤقتًا صالحًا في ذاكرة التخزين المؤقت لعامل الخدمة (<= يوم واحد): الخدمة إلى الشبكة للعثور على المورد. يعرض المتصفح المورد من HTTP ذاكرة التخزين المؤقت إذا كانت موجودة. وفي حال تعطل الشبكة، يقوم عامل الخدمة بإرجاع المورد من ذاكرة التخزين المؤقت لمشغِّل الخدمات
  • عند انتهاء صلاحية مورد مخزَّن مؤقتًا في ذاكرة التخزين المؤقت لمشغّل الخدمات (> يوم واحد): تشير هذه السمة إلى إلى الشبكة لجلب المورد. يجلب المتصفّح الموارد عبر الشبكة نظرًا لانتهاء صلاحية النسخة المخزّنة مؤقتًا في ذاكرة التخزين المؤقت لـ HTTP.

الإيجابيات والسلبيات

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

الخاتمة

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

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

مزيد من المعلومات