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

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

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

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

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

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

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

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

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

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

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

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

يعترض مشغّل الخدمة طلبات 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 سيناريوهات: طويلة المدى ومتوسط المدى وقصير المدى.

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

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

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

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

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

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

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

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

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

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

مشغّل الخدمات في جميع السيناريوهات

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

الخلاصة

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

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

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