سلوكيات ذاكرة التخزين المؤقت وإعدادات TTL
حدّدوا سلوكيات ذاكرة التخزين المؤقت المستندة إلى المسار، واضبطوا قيم TTL الدنيا والافتراضية والقصوى، واستخدموا ترويسات cache-control لضبط التخزين المؤقت بدقة.
سلوكيات ذاكرة التخزين المؤقت وإعدادات TTL درس مجاني في AWS Solutions Architect على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AWS Solutions Architect، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.
سلوكيات التخزين المؤقت: ما المقصود بها؟
سلوكيات التخزين المؤقت هي القواعد التي تُخبر CloudFront بكيفية التعامل مع الطلبات الخاصة بأنماط مسارات URL المختلفة. وتربط كل سلوك من سلوكيات التخزين المؤقت نمط مسار (مثل /images/* أو /api/* أو *.css) بمصدر محدد وإعدادات تخزين مؤقت محددة.
تحتوي التوزيعة على سلوك التخزين المؤقت الافتراضي (الذي يطابق جميع المسارات التي لا تطابقها سلوكيات أكثر تحديدًا) وما يصل إلى 25 سلوكًا إضافيًا قائمًا على المسارات. وتقيّم CloudFront السلوكيات بالترتيب من الأكثر تحديدًا إلى الأقل تحديدًا، ثم تنتقل إلى السلوك الافتراضي.
مطابقة أنماط المسارات
تدعم أنماط المسارات أحرف البدل: يطابق * أي مجموعة من الأحرف، بما فيها الشرطات المائلة، بينما يطابق ? أي حرف واحد. أمثلة:
/images/*— جميع عناوين URL التي تبدأ بـ /images/*.jpg— جميع الطلبات التي تنتهي بـ .jpg في أي موضع من المسار/api/v2/*— جميع مسارات API v2/static/??.css— ملفات CSS الثابتة التي يسبق .css فيها حرفان بالضبط
تُقيَّم السلوكيات حسب الترتيب المدرج في إعدادات التوزيعة. ضع الأنماط الأكثر تحديدًا أولًا. ويطابق السلوك الافتراضي (*) في النهاية دائمًا.
سياسة التخزين المؤقت مقابل سياسة طلب المصدر
تفصل CloudFront منطق التخزين المؤقت إلى نوعين من السياسات:
- سياسة التخزين المؤقت: تحدد ما تستخدمه CloudFront بوصفه مفتاح التخزين المؤقت—أي مجموعة الرؤوس وسلاسل الاستعلام وملفات تعريف الارتباط التي تحدد ما إذا كان كائن مخزّن مؤقتًا يطابق الطلب. كما تحدد حدود TTL.
- سياسة طلب المصدر: تحدد الرؤوس وسلاسل الاستعلام وملفات تعريف الارتباط التي تُمرَّر إلى المصدر، حتى إن لم تكن جزءًا من مفتاح التخزين المؤقت (لإرسال رؤوس المصادقة إلى المصدر من دون تغيير التخزين المؤقت لكل رمز مميز)
توفر AWS سياسات مُدارة (مثل CachingOptimized وCachingDisabled) تغطي معظم حالات الاستخدام، أو يمكنك إنشاء سياسات مخصصة.
إعدادات TTL في CloudFront
تلتزم CloudFront بثلاث قيم TTL من سياسة التخزين المؤقت:
- الحد الأدنى لـ TTL: أقصر مدة تخزّن فيها CloudFront كائنًا مؤقتًا، بغض النظر عن رؤوس المصدر (الافتراضي 0)
- TTL الافتراضي: المدة التي تخزّن فيها CloudFront كائنًا مؤقتًا عندما لا يرسل المصدر رأس
Cache-ControlأوExpires(الافتراضي 86,400 ثانية = يوم واحد) - الحد الأقصى لـ TTL: أطول مدة يمكن لـ CloudFront تخزين كائن خلالها مؤقتًا، ما يضع حدًا لتوجيه
Cache-Control max-ageالصادر من المصدر (الافتراضي 31,536,000 = سنة واحدة)
تحدد هذه القيم الثلاث مدة التخزين المؤقت الفعلية التي ترسلها المصادر عبر رؤوس Cache-Control.
رؤوس Cache-Control من المصادر
عندما يرسل المصدر رأسًا من نوع Cache-Control: max-age=3600، تخزّن CloudFront الكائن مؤقتًا لمدة 3,600 ثانية، ما دام هذا المقدار يقع ضمن حدي TTL الأدنى والأقصى في سياسة التخزين المؤقت. وإذا أرسل المصدر Cache-Control: no-cache أو Cache-Control: no-store، فستتحقق CloudFront من المصدر قبل تقديم النسخة المخزّنة مؤقتًا في كل مرة.
بالنسبة إلى الأصول الثابتة التي نادرًا ما تتغير، عيّن قيمة max-age طويلة (مثل 31536000 = سنة واحدة) واستخدم تغيير أسماء التخزين المؤقت—بإدراج تجزئة المحتوى في أسماء الملفات (مثل app.a3f4b5.js)—حتى يتغير عنوان URL عند تغير المحتوى، ما يؤدي تلقائيًا إلى إبطال النسخة القديمة المخزّنة مؤقتًا.
# S3 object metadata with long cache TTL
aws s3 cp app.a3f4b5.js s3://my-bucket/ \
--cache-control 'max-age=31536000, immutable' \
--content-type 'application/javascript'فصل السلوكيات الثابتة والديناميكية
يفصل نمط قوي لسلوكيات التخزين المؤقت بين المحتوى الثابت والديناميكي:
/static/*و*.cssو*.jsو*.jpg→ مصدر S3، مع سياسة CachingOptimized (TTL مرتفع، ومن دون ملفات تعريف ارتباط أو سلاسل استعلام في مفتاح التخزين المؤقت)/api/*→ مصدر ALB، مع سياسة CachingDisabled (يُجلب دائمًا من المصدر، وتُمرَّر جميع الرؤوس وملفات تعريف الارتباط)/*(الافتراضي) → مصدر ALB، مع تخزين مؤقت متوسط
يفصل هذا بين طبقة المحتوى الثابت القابلة للتخزين المؤقت بدرجة كبيرة وطبقة API الديناميكية، ما يزيد نسب إصابة ذاكرة التخزين المؤقت للمحتوى الثابت مع ضمان حداثة استجابات API دائمًا.
إبطال التخزين المؤقت
عندما تحدّث المحتوى في S3 أو في مصدرك، وتريد تقديم الإصدار الجديد فورًا من CloudFront من دون انتظار انتهاء TTL، تُنشئ إبطالًا للتخزين المؤقت. حدّد المسارات المطلوب إبطالها (مثل /images/logo.png أو /images/*)، وستزيل CloudFront هذه الكائنات من جميع ذاكرات التخزين المؤقت عند الحافة.
تترتب تكلفة على عمليات الإبطال: أول 1,000 مسار شهريًا مجانية، وتُحتسب تكلفة لكل مسار إضافي. وتُحتسب عمليات الإبطال باستخدام أحرف البدل (مثل /*) مسارًا واحدًا. ومن أفضل الممارسات استخدام أسماء ملفات ذات إصدارات للأصول الثابتة (تغيير أسماء التخزين المؤقت) بدلًا من عمليات الإبطال المتكررة لتقليل التكلفة والتأخير.
# Create a cache invalidation for updated images
aws cloudfront create-invalidation \
--distribution-id EDFDVBD6EXAMPLE \
--paths '/images/logo.png' '/css/main.css'مكونات مفتاح التخزين المؤقت
مفتاح التخزين المؤقت هو المعرّف الفريد الذي تستخدمه CloudFront للبحث عن استجابة مخزّنة مؤقتًا. ويكون مفتاح التخزين المؤقت افتراضيًا هو مسار URL فقط. وتؤدي إضافة مكونات أخرى إلى زيادة عدد إدخالات التخزين المؤقت المميزة:
- سلاسل الاستعلام: يُعد
/search?q=awsو/search?q=s3إدخالين منفصلين في التخزين المؤقت إذا كانqجزءًا من مفتاح التخزين المؤقت - الرؤوس: يتيح تضمين
Accept-Encodingلـ CloudFront تخزين إصداري gzip وغير gzip مؤقتًا بشكل منفصل - ملفات تعريف الارتباط: يؤدي تضمين ملفات تعريف ارتباط الجلسة إلى إنشاء إدخالات تخزين مؤقت لكل مستخدم، ما يعطّل التخزين المؤقت فعليًا
قلّل مكونات مفتاح التخزين المؤقت إلى الحد الأدنى لتحقيق أعلى كفاءة للتخزين المؤقت. ولا تُضمّن إلا ما ينتج عنه اختلاف حقيقي في محتوى الاستجابة.
الضغط عند الحافة
يمكن لـ CloudFront ضغط الكائنات النصية تلقائيًا (HTML وCSS وJavaScript وJSON) باستخدام gzip أو Brotli قبل تسليمها إلى المشاهدين. ويقلل ذلك حجم الحمولة بنسبة 60–80% ويحسّن أوقات تحميل الصفحات من دون أي تغييرات على مصدرك.
لتمكين الضغط: تأكد من أن سياسة التخزين المؤقت تتضمن Accept-Encoding في مفتاح التخزين المؤقت (إذ تحتاج CloudFront إلى تخزين إصداري gzip وغير gzip مؤقتًا بشكل منفصل)، ومكّن Compress Objects Automatically في سلوك التخزين المؤقت. تضغط CloudFront الكائنات التي يزيد حجمها على 1,000 بايت ويقل عن 10 ميغابايت.
نسبة إصابة ذاكرة التخزين المؤقت والمراقبة
نسبة إصابة ذاكرة التخزين المؤقت هي النسبة المئوية للطلبات التي تُقدَّم من ذاكرة التخزين المؤقت في CloudFront من دون الوصول إلى المصدر. وتعني النسبة المرتفعة (80% أو أكثر) انخفاض تكاليف المصدر وتحسن الأداء. راقبها عبر تقرير Cache Statistics في وحدة تحكم CloudFront أو عبر مقياس CloudWatch CacheHitRate.
من طرق تحسين نسبة إصابة ذاكرة التخزين المؤقت: زيادة قيم TTL، وتقليل عدد الرؤوس وملفات تعريف الارتباط في مفتاح التخزين المؤقت، واستخدام تطبيع سلاسل الاستعلام (تمرير سلاسل الاستعلام التي يستخدمها تطبيقك فعليًا فقط)، وتعيين رؤوس Cache-Control مناسبة عند المصدر.
# Get CloudFront metrics for cache hit rate
aws cloudwatch get-metric-statistics \
--namespace AWS/CloudFront \
--metric-name CacheHitRate \
--dimensions Name=DistributionId,Value=EDFDVBD6EXAMPLE \
--start-time 2026-06-19T00:00:00Z \
--end-time 2026-06-20T00:00:00Z \
--period 3600 \
--statistics Average \
--region us-east-1إعدادات المصدر والبروتوكول لكل سلوك
يمكن لكل سلوك من سلوكيات التخزين المؤقت الإشارة إلى مصدر مختلف، ما يتيح لتوزيعة CloudFront واحدة تقديم المحتوى من خلفيات متعددة. على سبيل المثال:
/static/*→ مصدر S3 (حاوية خاصة عبر OAC)/api/*→ مصدر ALB في us-east-1/media/*→ مصدر CDN من MediaPackage لبث الفيديو
كما يكوّن كل سلوك بشكل مستقل سياسة بروتوكول المشاهد، وطرق HTTP المسموح بها، واقترانات الدوال (CloudFront Functions أو Lambda@Edge). ويجعل ذلك من التوزيعة الواحدة طبقة تقديم مرنة ومتعددة الأغراض.
اختبار سريع
اختبر مدى فهمك لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.
مراجعة الدرس
تعلمت في هذا الدرس أن: سلوكيات التخزين المؤقت تربط أنماط مسارات URL بالمصادر وقواعد التخزين المؤقت، وأن حدود TTL الأدنى والافتراضي والأقصى تتحكم في مدة تخزين المحتوى مؤقتًا مع إعطاء الأولوية لرؤوس Cache-Control الخاصة بالمصدر عند توفرها، وأن عمليات إبطال التخزين المؤقت تزيل المحتوى القديم فورًا من جميع مواقع الحافة. قلّل مكونات مفتاح التخزين المؤقت إلى الحد الأدنى لزيادة نسبة الإصابة. وفي الدرس التالي، سنستكشف عناوين URL الموقعة وملفات تعريف الارتباط الموقعة والتقييد الجغرافي.
تعلم AWS Solutions Architect مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «سلوكيات ذاكرة التخزين المؤقت وإعدادات TTL» مجاني؟
نعم — نص درس «سلوكيات ذاكرة التخزين المؤقت وإعدادات TTL» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AWS Solutions Architect، انتقل إلى CoddyKit PRO. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.
ماذا ستتعلم في «سلوكيات ذاكرة التخزين المؤقت وإعدادات TTL»؟
حدّدوا سلوكيات ذاكرة التخزين المؤقت المستندة إلى المسار، واضبطوا قيم TTL الدنيا والافتراضية والقصوى، واستخدموا ترويسات cache-control لضبط التخزين المؤقت بدقة. تتمرن على AWS Solutions Architect مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AWS Solutions Architect؟
لا تُشترط خبرة سابقة. AWS Solutions Architect على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «سلوكيات ذاكرة التخزين المؤقت وإعدادات TTL»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AWS Solutions Architect هذا؟
نعم. كل درس في AWS Solutions Architect يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- توزيعات CloudFront والمصادر الأصلية
- سلوكيات ذاكرة التخزين المؤقت وإعدادات TTL
- عناوين URL الموقعة وملفات تعريف الارتباط الموقعة والتقييد الجغرافي
- CloudFront مع WAF وLambda@Edge