إيجابيات وسلبيات استخدام منطق انتهاء صلاحية متناسق أو مختلف في ذاكرة التخزين المؤقت لعامل الخدمة وطبقات ذاكرة التخزين المؤقت لبروتوكول HTTP.
على الرغم من أنّ عاملي الخدمات وتطبيقات الويب التقدّمية (PWA) أصبحتا معايير لتطبيقات الويب الحديثة، إلا أنّ التخزين المؤقت للموارد قد أصبحت أكثر تعقيدًا من أي وقت مضى. تتناول هذه المقالة الصورة الكبيرة للتخزين المؤقت للمتصفح، بما في ذلك:
- حالات الاستخدام والاختلافات بين التخزين المؤقت لمشغّل الخدمات والتخزين المؤقت عبر HTTP
- إيجابيات وسلبيات الإستراتيجيات المختلفة لانتهاء صلاحية التخزين المؤقت لعاملي الخدمات مقارنةً بالاستراتيجيات العادية استراتيجيات التخزين المؤقت لـ HTTP.
نظرة عامة على تدفق التخزين المؤقت
على مستوى عالٍ، يتبع المتصفح ترتيب التخزين المؤقت أدناه عندما يطلب موردًا:
- ذاكرة التخزين المؤقت لمشغّل الخدمات: يتحقّق مشغّل الخدمات ممّا إذا كان المورد في ذاكرة التخزين المؤقت أو ما إذا كان سيتم عرض المورد نفسه بناءً على استراتيجيات التخزين المؤقت المبرمجة. ملاحظة أن هذا لا يحدث تلقائيًا. يجب إنشاء معالج أحداث جلب في مشغّل الخدمات ويعترض طلبات الشبكة بحيث يتم عرض الطلبات من الخدمة ذاكرة التخزين المؤقت الخاصة بالعامل بدلاً من الشبكة.
- ذاكرة التخزين المؤقت لبروتوكول HTTP (المعروفة أيضًا باسم ذاكرة التخزين المؤقت للمتصفّح): إذا تم العثور على المورد في HTTP ذاكرة تخزين مؤقت ولم تنتهِ صلاحيتها بعد، يستخدم المتصفح تلقائيًا المورد من ذاكرة التخزين المؤقت لـ HTTP.
- من جانب الخادم: إذا لم يتم العثور على أي شيء في ذاكرة التخزين المؤقت لمشغِّل الخدمات أو ذاكرة التخزين المؤقت لبروتوكول HTTP، ينتقل المتصفح إلى الشبكة لطلب المورد. إذا لم يتم تخزين المورد مؤقتًا في شبكة توصيل للمحتوى، يجب أن يعود الطلب إلى خادم المصدر.
طبقات التخزين المؤقت
التخزين المؤقت لعاملي الخدمات
عامل الخدمة يعترض طلبات HTTP من نوع الشبكة ويستخدم استراتيجية التخزين المؤقت لتحديد الموارد التي يجب إرجاعها إلى المتصفح. ذاكرة التخزين المؤقت لمشغِّل الخدمات وبروتوكول HTTP ذاكرة التخزين المؤقت تخدم نفس الغرض العام، غير أن ذاكرة التخزين المؤقت لعامل الخدمة توفر المزيد من إمكانات التخزين المؤقت، مثل التحكم الدقيق في ما يتم تخزينه مؤقتًا وكيفية التخزين المؤقت.
التحكم في ذاكرة التخزين المؤقت لمشغِّل الخدمات
عامل الخدمة يعترض طلبات HTTP باستخدام الحدث
المستمعين (حدث fetch
عادةً). هذا النمط
مقتطف الرمز الذي يوضح منطق
ذاكرة التخزين المؤقت أولاً
استراتيجية التخزين المؤقت.
ويُنصح بشدة باستخدام 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، لذلك ينتقل من جانب الخادم.
الإيجابيات والسلبيات
- الإيجابي: يواجه المستخدمون استجابة فورية عندما يقوم عامل الخدمة بإرجاع الموارد المخزنة مؤقتًا فورًا.
- المحترف: يتحكم عامل الخدمة بمزيد من الدقة في وقت استخدام ذاكرة التخزين المؤقت لطلب نسخ جديدة من الموارد.
- السلبيات: يلزم وجود استراتيجية محددة جيدًا للتخزين المؤقت لعامل الخدمة.
السيناريو: التخزين المؤقت في منتصف المدة (القِدم أثناء إعادة التحقق)
- عندما يكون مورد مخزَّن مؤقتًا صالحًا في ذاكرة التخزين المؤقت لعامل الخدمة (<= 30 يومًا): الخدمة المورد المخبأ على الفور.
- عند انتهاء صلاحية مورد مخزَّن مؤقتًا في ذاكرة التخزين المؤقت لعامل الخدمة (أكثر من 30 يومًا): تشير هذه الحالة إلى إلى الشبكة للعثور على المورد. لا يحتوي المتصفّح على نسخة من المورد في ذاكرة التخزين المؤقت لـ HTTP، لذلك ينتقل من جانب الخادم.
الإيجابيات والسلبيات
- الإيجابي: يواجه المستخدمون استجابة فورية عندما يقوم عامل الخدمة بإرجاع الموارد المخزنة مؤقتًا فورًا.
- النموذج الاحترافي: يمكن لمشغّل الخدمة التأكّد من أنّ الطلب التالي لعنوان URL معيّن يستخدم استجابة جديدة من الشبكة، وذلك بفضل إعادة التحقق التي تحدث "في الخلفية".
- السلبيات: يلزم وجود استراتيجية محددة جيدًا للتخزين المؤقت لعامل الخدمة.
السيناريو: التخزين المؤقت على المدى القصير (عودة الشبكة إلى ذاكرة التخزين المؤقت)
- عندما يكون مورد مخزَّن مؤقتًا صالحًا في ذاكرة التخزين المؤقت لعامل الخدمة (<= يوم واحد): الخدمة إلى الشبكة للعثور على المورد. يعرض المتصفح المورد من HTTP ذاكرة التخزين المؤقت إذا كانت موجودة. وفي حال تعطل الشبكة، يقوم عامل الخدمة بإرجاع المورد من ذاكرة التخزين المؤقت لمشغِّل الخدمات
- عند انتهاء صلاحية مورد مخزَّن مؤقتًا في ذاكرة التخزين المؤقت لمشغّل الخدمات (> يوم واحد): تشير هذه السمة إلى إلى الشبكة لجلب المورد. يجلب المتصفح الموارد عبر الشبكة نظرًا لانتهاء صلاحية النسخة المخزّنة مؤقتًا في ذاكرة التخزين المؤقت لـ HTTP.
الإيجابيات والسلبيات
- الإيجابيات: عندما تكون الشبكة غير مستقرة أو معطلة، يعرض عامل الخدمة النسخة المخزَّنة مؤقتًا الموارد على الفور.
- السلبيات: يتطلب عامل الخدمة تنشيطًا إضافيًا لذاكرة التخزين المؤقت لتجاوز ذاكرة التخزين المؤقت لـ HTTP ضبط "الشبكة أولاً" الطلبات.
الخاتمة
ونظرًا لتعقيد مجموعة سيناريوهات التخزين المؤقت، لا يمكن تصميم قاعدة واحدة التي تغطي جميع الحالات ومع ذلك، بناءً على النتائج الواردة في الأقسام السابقة، هناك بعض اقتراحات يجب الاطلاع عليها عند تصميم استراتيجيات ذاكرة التخزين المؤقت:
- منطق التخزين المؤقت لمشغِّل الخدمات لا يلزم أن يكون متوافقًا مع تاريخ انتهاء التخزين المؤقت لـ HTTP المنطق. استخدِم منطق انتهاء صلاحية أطول في مشغّل الخدمات لمنح مشغّل الخدمات إن أمكن. المزيد من التحكم.
- لا يزال التخزين المؤقت لبروتوكول HTTP يلعب دورًا مهمًا، ولكنه لا يكون موثوقًا به عندما تكون الشبكة غير مستقرة أو منخفضة.
- مراجعة استراتيجيات التخزين المؤقت لكل مورد للتأكّد من التخزين المؤقت لعامل الخدمة توفر قيمتها، بدون أن تتعارض مع ذاكرة التخزين المؤقت HTTP.