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

يستخدم Firebase Hosting شبكة توصيل محتوى (CDN) عالمية فعّالة لتحسين موقعك الإلكتروني في أسرع وقت ممكن. ممكن.

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

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

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

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

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

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

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

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

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

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

في مثال العنوان هذا، تُنفِّذ التوجيهات ثلاثة إجراءات:

  • public: وضع علامة على ذاكرة التخزين المؤقت على أنّها public وهذا يعني أنّه يمكن للمتصفّح و الخوادم الوسيطة (أي شبكة توصيل المحتوى (CDN) لموقع 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 header رؤوس الطلبات التي يجب استخدامها لتقديم استجابة مناسبة (سواء كان المحتوى المخزّن مؤهّلاً أو يجب إعادة التحقّق من صلاحيته مع خادم المصدر).

يضبط Firebase Hosting تلقائيًا عنوان 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 مختلفة في ذاكرة التخزين المؤقت بشكل منفصل. ملاحظة: إنّ تطبيق "Hosting" يضيف Cookie وAuthorization إلى عنوان Vary بشكل تلقائي عندما يكون الطلب مصممة للمحتوى الديناميكي. يضمن ذلك عدم وصول أي جلسة أو تفويض باستخدام ملف تعريف ارتباط الذي تستخدمه يكون جزءًا من مفتاح ذاكرة التخزين المؤقت، ما يمنع التسرّب غير المقصود من المحتوى.

لاحظ أيضًا:

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

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

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

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

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