0Pricing
React Academy · درس

استراتيجيات التخزين المؤقت عند الحافة لتطبيقات React

استخدم ترويسات Cache-Control وCloudflare KV وR2 لتخزين الصفحات المُنشأة والأصول الثابتة مؤقتًا عند الحافة

استراتيجيات التخزين المؤقت عند الحافة لتطبيقات React درس مجاني في React Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.

ترويسات Cache-Control للتخزين المؤقت عند الحافة

تتحكم ترويسة الاستجابة Cache-Control في مدة تخزين استجابات SSR مؤقتًا لدى Cloudflare وغيرها من شبكات CDN. والتوجيهات الأساسية هي: max-age (ذاكرة التخزين المؤقت للمتصفح)، وs-maxage (مدة التخزين المؤقت لدى CDN أو الذاكرة المشتركة)، وstale-while-revalidate (عرض المحتوى القديم أثناء إعادة التحقق منه في الخلفية).

s-maxage مقابل max-age

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

تخزين صفحات SSR مؤقتًا باستخدام stale-while-revalidate

إضافة stale-while-revalidate=30 إلى ترويسة Cache-Control تخبر Cloudflare بعرض الصفحة المخزنة مؤقتًا فورًا، مع جلب نسخة حديثة في الخلفية. ويحصل المستخدمون دائمًا على استجابة سريعة، بينما يبلغ الحد الأقصى لقِدم المحتوى s-maxage + stale-while-revalidate ثانية.

الصفحات المخصصة: ترويسة Vary

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

تجاوز الذاكرة المؤقتة للطلبات الموثَّقة

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

Cloudflare KV: مخزن مفتاح-قيمة عند الحافة

Cloudflare KV هو مخزن مفتاح-قيمة موزع عالميًا، يخزّن البيانات بالقرب من المستخدمين. ويمكنك تخزين HTML المعروض مؤقتًا في KV — خزّن الصفحة المعروضة بوصفها قيمة مع TTL، ثم اقرأها من KV عند الطلبات اللاحقة على الحافة بدلًا من إعادة عرضها باستخدام React.

أداء القراءة والكتابة في KV

تتم قراءات KV بسرعة لأن البيانات تُكرَّر في نقطة PoP الطرفية التي تخدم الطلب — ويكون زمن القراءة المعتاد أقل من 5ms. أما كتابات KV فتستخدم الاتساق النهائي؛ إذ تنتقل الكتابة في منطقة واحدة إلى جميع نقاط PoP العالمية خلال 60 ثانية، مما يعني أن بعض المستخدمين قد يرون بيانات قديمة لفترة وجيزة.

Cloudflare R2: تخزين الكائنات للأصول الكبيرة

Cloudflare R2 هي خدمة لتخزين الكائنات متوافقة مع S3 ولا تفرض رسومًا على نقل البيانات إلى الخارج. وهي مناسبة للأصول الكبيرة التي لا تتسع لها KV، مثل وحدات WASM وصور OG المُسبقة العرض ومجموعات بيانات JSON الكبيرة. وتصل Workers إلى R2 عبر الارتباطات، تمامًا كما تصل إلى KV.

وسوم الذاكرة المؤقتة للإبطال الدقيق

تدعم Cloudflare Enterprise وسوم الذاكرة المؤقتة: تضع وسمًا على الاستجابة باستخدام Cache-Tag: product-42، وعندما يتغير المنتج 42، تستدعي API الخاصة بـ Cloudflare لحذف جميع الاستجابات الموسومة بـ product-42. ويتيح ذلك إبطالًا دقيقًا للذاكرة المؤقتة من دون حذف محتوى الذاكرة المؤقتة بأكمله.

معالجة إبطال الذاكرة المؤقتة عند النشر

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

تنفيذ ذاكرة HTML المؤقتة المستندة إلى KV

يتبع Worker الذي يخزّن HTML الناتج عن SSR مؤقتًا في KV النمط التالي: احسب مفتاحًا من URL، ومن إعدادات اللغة اختياريًا، ثم تحقّق من وجوده في KV وأعد HTML المخزن مؤقتًا فورًا إذا عثرت عليه. وعند عدم العثور عليه، اعرض الصفحة باستخدام React، وخزّن النتيجة في KV مع TTL، ثم أعد HTML الذي عُرض حديثًا.

نموذج اتساق Cloudflare KV

ما نموذج الاتساق الذي تستخدمه Cloudflare KV للكتابات؟

مراجعة الدرس

يستخدم التخزين المؤقت عند الحافة لتطبيقات React عدة استراتيجيات متراكبة: s-maxage في Cache-Control لتخزين الصفحات العامة مؤقتًا لدى CDN، وVary: Cookie لمنع مشاركة الاستجابات المخصصة، وKV لتخزين HTML المعروض مؤقتًا عند الحافة، ووسوم الذاكرة المؤقتة للإبطال الدقيق. ويعني نموذج الاتساق النهائي في KV أن نشر الكتابة قد يستغرق ما يصل إلى 60 ثانية — لذا صمّم قيم TTL واستراتيجية الإبطال وفقًا لذلك.

الأسئلة الشائعة

هل درس «استراتيجيات التخزين المؤقت عند الحافة لتطبيقات React» مجاني؟

نعم — نص درس «استراتيجيات التخزين المؤقت عند الحافة لتطبيقات React» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.

ماذا ستتعلم في «استراتيجيات التخزين المؤقت عند الحافة لتطبيقات React»؟

استخدم ترويسات Cache-Control وCloudflare KV وR2 لتخزين الصفحات المُنشأة والأصول الثابتة مؤقتًا عند الحافة تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟

لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «استراتيجيات التخزين المؤقت عند الحافة لتطبيقات React»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟

نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ما العرض عند الحافة ولماذا يهم؟
  2. React على Cloudflare Workers باستخدام Hono
  3. بث SSR من الحافة
  4. استراتيجيات التخزين المؤقت عند الحافة لتطبيقات React
← العودة إلى React Academy