إدارة سلوك ذاكرة التخزين المؤقت

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

ويتم تلقائيًا تخزين أي محتوى ثابت مطلوب على شبكة توصيل المحتوى (CDN). إذا كنت إعادة نشر محتوى موقعك، فإن استضافة Firebase تقوم تلقائيًا بمحو جميع المحتوى المخزن مؤقتًا عبر شبكة توصيل المحتوى حتى الطلب التالي.

ومع ذلك، نظرًا لإنشاء خدمات Cloud Functions وCloud Run المحتوى ديناميكيًا، قد يختلف المحتوى الخاص بعنوان URL معين بناءً على عدة عوامل كإدخال المستخدم أو هوية المستخدم. لهذا السبب، تتطلب الطلبات لا تخزّن مؤقتًا شبكة توصيل المحتوى (CDN) بشكل تلقائي من خلال رمز الخلفية.

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

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

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

إذا كانت استجابة 404 تحتوي بالفعل على عناوين تخزين مؤقت تم ضبطها بواسطة وظائف السحابة الإلكترونية أو خدمة تشغيل السحابة الإلكترونية، فإنها تلغي 10 دقائق وتحدد بشكل كامل سلوك التخزين المؤقت شبكة توصيل المحتوى (CDN).

مزيد من المعلومات حول سلوك التخزين المؤقت في مستندات مطوّري البرامج على الويب

ضبط عنصر التحكّم في ذاكرة التخزين المؤقت

والأداة الرئيسية التي تستخدمها لإدارة ذاكرة التخزين المؤقت للمحتوى الديناميكي هي عنوان Cache-Control من خلال تهيئة هذا العنوان، يمكنك التواصل مع كليهما المتصفح وشبكة توصيل المحتوى (CDN) لمعرفة المدة التي يمكن خلالها تخزين المحتوى مؤقتًا. في الدالة، قمت بتعيين Cache-Control على النحو التالي:

res.set('Cache-Control', 'public, max-age=300, s-maxage=600');

في هذا المثال على الرأس، تنفذ الأوامر ثلاثة أشياء:

  • public: وضع علامة على ذاكرة التخزين المؤقت على أنّها public وهذا يعني أن كلاً من المتصفح و يمكن للخوادم الوسيطة (أي CDN for Firebase Hosting) أن تخزن مؤقتًا المحتوى.

  • max-age — تخبر المتصفح وشبكة توصيل المحتوى بعدد الثواني التي يمكن تخزينها في ذاكرة التخزين المؤقت. المحتوى. عند انتهاء الوقت المحدّد، يجب على المتصفح وشبكة توصيل المحتوى (CDN) إعادة التحقق من المحتوى باستخدام خادم المصدر. في مثال العنوان، السماح للمتصفح وشبكة توصيل المحتوى بتخزين المحتوى في ذاكرة التخزين المؤقت لمدة خمس دقائق (راجع يمكنك s-maxage أدناه للاطّلاع على عناصر تحكّم محدّدة للتخزين المؤقت في شبكة توصيل المحتوى (CDN).

  • s-maxage: لإلغاء التوجيه max-age في التخزين المؤقت لشبكة توصيل المحتوى (CDN) فقط يقول لشبكة توصيل المحتوى (CDN) عدد الثواني التي يمكنها تخزين المحتوى في ذاكرة التخزين المؤقت. متى يحين الوقت مرة أخرى، يجب أن تعيد شبكة توصيل المحتوى (CDN) التحقق من المحتوى من خلال خادم المصدر. في جلسة المعمل، مثال على العنوان، نلغي إعداد max-age لشبكة توصيل المحتوى فقط والسماح لشبكة توصيل المحتوى بتخزين المحتوى في ذاكرة التخزين المؤقت لمدة عشر دقائق.

بالنسبة إلى max-age وs-maxage، اضبط قيمهما على أطول فترة زمنية. إذا كنت تشعر بالارتياح تجاه تلقي المستخدمين لمحتوى قديم. إذا تغيرت صفحة كل بضع ثوانٍ، استخدم قيمة زمنية صغيرة. ومع ذلك، يمكن للأنواع الأخرى من المحتوى تخزين مؤقت بأمان لمدة ساعات أو أيام أو حتى أشهر.

يمكنك الاطّلاع على مزيد من المعلومات حول عنوان Cache-Control في شبكة مطوّر برامج Mozilla وفي مستندات المطوّرين على الويب:

متى يتم عرض المحتوى المخزّن مؤقتًا؟

يخزّن المتصفّح وشبكة توصيل المحتوى (CDN) المحتوى الخاص بك استنادًا إلى ما يلي:

  • اسم المضيف
  • المسار
  • سلسلة طلب البحث
  • محتوى عناوين الطلبات المحدّدة في عنوان Vary

تنويع العناوين

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

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

res.set('Vary', 'Accept-Encoding, X-My-Custom-Header');

في هذه الحالة، تكون قيمة العنوان Vary هي:

vary: X-My-Custom-Header, x-fh-requested-host, accept-encoding, cookie, authorization

ومن خلال هذين الإعدادين، يختلف طلبان متطابقان تم تخزين X-My-Custom-Header عنوان مؤقتًا بشكل منفصل. لاحظ أن الاستضافة تضيف Cookie وAuthorization إلى العنوان Vary بشكل تلقائي عندما يكون الطلب مصممة للمحتوى الديناميكي. يضمن ذلك عدم وصول أي جلسة أو تفويض باستخدام ملف تعريف ارتباط الذي تستخدمه يكون جزءًا من مفتاح ذاكرة التخزين المؤقت، ما يمنع التسرّب غير المقصود من المحتوى.

لاحظ أيضًا:

  • يمكن إجراء تخزين مؤقت لطلبات GET وHEAD فقط. طلبات HTTPS باستخدام بيانات لا يتم تخزينها مؤقتًا أبدًا.

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

استخدام ملفات تعريف الارتباط

عند استخدام ميزة "استضافة Firebase" مع دوال السحابة أو تشغيل السحابة الإلكترونية، تتم إزالة ملفات تعريف الارتباط بشكل عام من الطلبات الواردة. هذا النمط ضروريًا للسماح بسلوك ذاكرة التخزين المؤقت الفعال لشبكة توصيل المحتوى (CDN). لا يُسمح إلّا لملف تعريف الارتباط __session الذي يحمل اسمًا خاصًا بالمرور إلى لتنفيذه.

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