انتقل إلى محتوى الدرس
الدرس 66
تاريخ النشر: تاريخ التحديث:
دورة تكنولوجيا الويب

التخزين المؤقت HTTPHTTP Caching طريقة التحقق الشرطي ETag وكود 304، وفحص حالة الكاش في المتصفح، ومفهوم التخزين المؤقت في HTTP

أتقن منظومة التخزين المؤقت في HTTP وفق معيار RFC 9111: الفرق بين الكاش الخاص والكاش المشترك، وحساب الصلاحية، وتوجيهات Cache-Control والفرق بين no-cache وno-store، والتحقق الشرطي عبر ETag وكود 304، واستراتيجية كسر الكاش.
أقسام الدرس
10
الأمثلة
2
اللغة
العربية
المشاهدات
1,629
محتوى الدرس
في هذا الدرس 10تصفّح المواضيع

بعد أن تعرّفنا في الدروس السابقة على آليات المصادقة وإدارة الجلسات، يبرز سؤال هندسي جوهري: هل يعقل أن يعيد المتصفح تنزيل شعار الموقع وملفات التنسيق والخطوط من الخادم الأصلي في كل مرة ينتقل فيها المستخدم من صفحة إلى أخرى؟ هنا يأتي دور التخزين المؤقت في HTTP (HTTP Caching الموثق في المعيار RFC 9111‏)، وهو الآلية التي تحتفظ بنسخ صالحة لإعادة الاستخدام من استجابات الخادم داخل ذاكرة المتصفح أو الخوادم الوسيطة لتقديمها فوراً دون استهلاك الشبكة من جديد.

قبل الغوص في التفاصيل الهندسية، استعرض جدول المصطلحات التقنية الأساسية لهذا الدرس:

تعتمد دورة عمل الكاش في بروتوكول HTTP على البحث عن استجابة محفوظة تطابق طريقة الطلب والرابط (وخاصة طلبات GET‏):

  • عدم وجود نسخة في الكاش (Cache Miss — الزيارة الأولى): يطلب المتصفح الملف /assets/logo.svg، فلا يجده في ذاكرته، فيرسله إلى الخادم الأصلي ويستلم الرد 200 OK مرفقاً بحقول رأس التحكم بالكاش، فيعرضه ويحفظ نسخة منه.
  • إصابة الكاش بنجاح (Cache Hit — الزيارات التالية): عند الانتقال لصفحة أخرى تطلب الشعار نفسه، يجد المتصفح النسخة الصالحة في ذاكرته المحلية فيعرضها خلال أجزاء من المللي ثانية دون إرسال أي حزمة عبر الشبكة.

لاحظ في المثال الآتي كيف يرفق الخادم الأصلي قواعد التخزين المؤقت داخل رؤوس الرسالة:

  • HTTP/1.1 200 OK
  • Date: Thu, 05 Nov 2026 10:00:00 GMT
  • Content-Type: image/svg+xml
  • Content-Length: 4120
  • Cache-Control: public, max-age=86400
  • ETag: "v2-8f9d1a"
  • <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 30">...</svg>

مخطط هرمية طبقات الكاش في الويب

يحقق تطبيق سياسة تخزين مؤقت دقيقة أربع فوائد هندسية ملموسة على مستوى الشبكة والخادم وتجربة المستخدم:

  1. 1. إلغاء زمن تأخير الشبكة وتسريع العرض (Zero Network Latency‏): عندما تُقرأ الملفات مباشرة من ذاكرة المتصفح، يتجاوز الموقع زمن رحلة الحزم عبر الشبكة بالكامل، مما يرفع مؤشرات سرعة الصفحة مثل Largest Contentful Paint (LCP).
  2. 2. توفير استهلاك البيانات وعرض النطاق (Bandwidth Savings‏): يمنع الكاش إعادة تنزيل الخطوط والصور والملفات الثابتة ذات الأحجام الكبيرة في كل صفحة، مما يوفر باقات الإنترنت لمستخدمي الهواتف ويقلل فاتورة نقل البيانات على الخادم.
  3. 3. تخفيف العبء عن الخادم الأصلي وقاعدة البيانات (Origin Offloading‏): كل طلب يلبيه الكاش المحلي أو خادم CDN يزيل عبء معالجة طلب كامل عن وحدة المعالجة المركزية وقاعدة البيانات في الخادم الأصلي، مما يحمي الموقع من الانهيار أوقات الذروة.
  4. 4. تعزيز استقرار الخدمة عند تذبذب الشبكة (Resilience‏): تتيح النسخ المخزنة استمرار عمل الواجهة الرسومية بسلاسة حتى لو واجه الاتصال بالخادم الأصلي بطئاً لحظياً.

يصنف المعيار القياسي RFC 9111 ذواكر التخزين المؤقت في الويب إلى فئتين معماريتين رئيسيتين بحسب نطاق الوصول إلى النسخ المحفوظة:

  • 1. الكاش الخاص (Private Cache — ذاكرة المتصفح): مخصص لمستخدم واحد فقط ويعمل داخل متصفحه الشخصي (في الذاكرة العشوائية Memory Cache أو القرص Disk Cache‏). يُضبط عبر التوجيه Cache-Control: private، ويصلح لحفظ الموارد المرتبطة بحساب المستخدم نفسه دون مشاركتها مع غيره.
  • 2. الكاش المشترك (Shared Cache — الخوادم الوسيطة وشبكات CDN‏): يقع في منتصف الطريق بين المستخدمين والخادم الأصلي (مثل الخوادم العكسية Reverse Proxies وعقد شبكات CDN‏). النسخة الواحدة المخزنة فيه بتوجيه Cache-Control: public تُقدَّم لآلاف الزوار المختلفين حول العالم؛ ولذلك يُمنع منعاً باتاً تخزين أي بيانات شخصية فيه.

تأمل المخطط المعماري الآتي الذي يقارن بين مسار الكاش الخاص والكاش المشترك وحالات الصلاحية:

  • Cache-Control: private, max-age=600
  • Cache-Control: public, max-age=86400, s-maxage=604800
مخطط معماري يقارن بين الكاش الخاص في المتصفح والكاش المشترك في CDN وحالات الصلاحية وتوجيهات Cache-Control

تمر كل نسخة محفوظة داخل الكاش بحالتين زمنيتين تحددهما معادلة عمر النسخة الحالي (Age‏) مقابل مدة الصلاحية الكلية (Freshness Lifetime‏):

  • حالة النسخة الطازجة (Fresh‏): عندما يكون الوقت المنقضي منذ إصدار الاستجابة أقل من مدة الصلاحية المحددة (مثلاً max-age=3600 ثانية ولم يمر سوى 500 ثانية). هنا يستخدمها المتصفح فوراً دون أي اتصال بالخادم.
  • حالة النسخة المنتهية (Stale‏): عندما يتجاوز عمر النسخة مدة الصلاحية. من المهم معرفة أن المتصفح لا يحذف النسخة المنتهية فوراً، بل يحتفظ بها في الذاكرة ويرسل طلباً شرطياً صغيراً لسؤال الخادم إن كانت لا تزال صالحة.

يحسب المتصفح والخادم الوسيط زمن الصلاحية عبر حقول الرأس القياسية الآتية (حيث تتفوق تعليمة max-age دائماً على حقل Expires القديم عند وجودهما معاً):

  • HTTP/1.1 200 OK
  • Date: Thu, 05 Nov 2026 12:00:00 GMT
  • Cache-Control: public, max-age=3600
  • Expires: Thu, 05 Nov 2026 13:00:00 GMT
  • Age: 1200

يُعدّ حقل الرأس Cache-Control مركز القيادة الرئيسي للتخزين المؤقت في HTTP؛ إذ يقبل مجموعة من التوجيهات (Directives‏) المفصولة بفواصل لضبط السياسة بدقة:

  • التوجيه max-age=N: يحدد عدد الثواني التي تظل فيها النسخة صالحة (Fresh‏) بدءاً من وقت إصدار الاستجابة.
  • التوجيه s-maxage=N: يحدد مدة صلاحية خاصة بالكاش المشترك (Shared Caches / CDN‏) تتجاوز قيمة max-age العادية.
  • التوجيهان public وprivate: يسمح public بتخزين النسخة في كلٍّ من المتصفح وشبكات CDN، بينما يحصر private التخزين داخل متصفح المستخدم وحده.
  • التوجيه must-revalidate: يلزم الكاش بعدم استخدام النسخة بعد انتهاء صلاحيتها (Stale‏) إلا بعد نجاح التحقق الشرطي من الخادم الأصلي.
  • التوجيه immutable: يخبر المتصفح أن هذا الملف ثابت ولن يتغير أبداً طوال مدة صلاحيته، مما يمنع المتصفح من إرسال طلبات تحقق شرطية حتى لو ضغط المستخدم زر تحديث الصفحة.

من أكثر الأخطاء شيوعاً في هندسة الويب الخلط بين التوجيهين no-cache وno-store؛ فبرغم تقارب الاسمين، يختلف سلوكهما الفعلي اختلافاً جذرياً:

  • التوجيه Cache-Control: no-cache (خزّن النسخة ولكن تحقق من الخادم قبل كل استخدام): على عكس ما يوحي به اسمه الحرفي، فإن no-cache يسمح للمتصفح بحفظ النسخة في الكاش! لكنه يشترط عدم عرضها للمستخدم في أي زيارة تالية إلا بعد إرسال طلب تحقق شرطي سريع للخادم الأصلي للتأكد من عدم تغيرها. وهو مثالي لصفحات HTML المتجددة.
  • التوجيه Cache-Control: no-store (منع التخزين تماماً في أي ذاكرة): يمنع المتصفح وجميع الخوادم الوسيطة منعاً قاطعاً من كتابة أي بايت من الاستجابة في القرص أو الكاش. وهو الخيار الإلزامي للبيانات شديدة الحساسية مثل كشوف الحسابات البنكية ورموز الاسترداد السرية.

جرّب المختبر التفاعلي الآتي لمقارنة سلوك المتصفح مع التوجيهات الأربعة على السلك:

Cache Control Directives Comparisonمقارنة توجيهات التحكم بالكاش

مقارنة توضح الفارق الحاسم بين no-cache لإعادة التحقق الشرطي و no-store لمنع التخزين نهائياً.

Shell
# no-cache: Caches resource, but MUST revalidate with server:
Cache-Control: no-cache, must-revalidate
ETag: "v3a1b2"

# no-store: NEVER write to cache/disk (for sensitive data):
Cache-Control: no-store, private

Cache Revalidation Status Previewمعاينة إعادة التحقق 304

معاينة توضح توفير البيانات باستجابة 304 مع no-cache مقابل المنع التام للتخزين مع no-store.

ماذا يحدث عندما تنتهي مدة صلاحية ملف مخزن في الكاش ويصبح في حالة Stale؟ بدلاً من إعادة تنزيل الملف بالكامل وإهدار البيانات، ينفذ المتصفح عملية التحقق الشرطي (Conditional Revalidation‏) باستخدام ثنائيات التحقق:

  1. 1. التحقق ببصمة الكيان (ETag → If-None-Match — الأدق والأحدث): يرسل الخادم مع الملف في المرة الأولى حقل الرأس ETag: "v2-8f9d1a" الذي يمثل بصمة فريدة لمحتوى الملف. وعند انتهاء الصلاحية، يرسل المتصفح طلب GET مرفقاً بحقل الرأس الشرطي If-None-Match: "v2-8f9d1a".
  2. 2. التحقق بتاريخ آخر تعديل (Last-Modified → If-Modified-Since‏): يرسل الخادم تاريخ آخر تعديل للملف، فيعيد المتصفح إرساله في حقل الرأس If-Modified-Since.

إذا تطابقت البصمة ولم يتغير الملف، يرد الخادم بكود الحالة 304 Not Modified وبدون جسم رسالة إطلاقاً (فتوفر نقل الملف بالكامل) ويجدد المتصفح صلاحية النسخة المحفوظة لديه. أما إذا تغير الملف فيرد الخادم بكود 200 OK مع النسخة الجديدة.

  • GET /assets/bundle.css HTTP/1.1
  • Host: www.closetag.com
  • If-None-Match: "v2-8f9d1a"
  • If-Modified-Since: Wed, 04 Nov 2026 08:00:00 GMT
  • HTTP/1.1 304 Not Modified
  • Date: Thu, 05 Nov 2026 11:05:00 GMT
  • Cache-Control: public, max-age=86400
  • ETag: "v2-8f9d1a"
مخطط تسلسلي يوضح آلية التحقق الشرطي في الكاش عبر ETag وIf-None-Match واستجابة 304 Not Modified بدون جسم رسالة

عند فحص حركة الشبكة داخل أدوات المطورين (DevTools → Network‏) أو عبر أداة سطر الأوامر curl -I، راقب عمودي الحالة (Status‏) والحجم (Size‏) لتمييز مصدر كل ملف:

  • العبارة 200 OK (from memory cache): جُلبت النسخة فوراً من الذاكرة العشوائية RAM في التبويب الحالي بزمن 0 ms.
  • العبارة 200 OK (from disk cache): جُلبت النسخة من الكاش المحفوظ على القرص الصلب دون إرسال أي طلب عبر الشبكة.
  • الكود 304 Not Modified: أرسل المتصفح طلباً شرطياً عبر الشبكة وأكد الخادم صلاحية النسخة المحلية دون إعادة إرسال جسم الملف.
  • خيار تعطيل الكاش أثناء البرمجة (Disable cache‏): تفعيل مربع Disable cache أعلى تبويب Network يوقف استخدام الكاش المحلي طالما بقيت نافذة DevTools مفتوحة، ليضمن لك رؤية تعديلاتك البرمجية فوراً.
  • curl -I https://www.closetag.com/assets/app.css
  • curl -i -H 'If-None-Match: "v2-8f9d1a"' https://www.closetag.com/assets/app.css

تواجه هندسة الويب معضلة كلاسيكية عند ضبط الكاش: نحن نريد تخزين ملفات CSS وJavaScript لمدة سنة كاملة (max-age=31536000, immutable‏) لأقصى سرعة ممكنة، لكننا نريد في الوقت ذاته أن يصل أي تحديث برمجي جديد إلى جميع المستخدمين في اللحظة نفسها التي ننشره فيها! فكيف نجمع بين الأمرين؟

الحل الهندسي القياسي هو كسر الكاش بالبصمة الرقمية (Cache Busting / Content Fingerprinting‏)؛ حيث تضيف أدوات البناء الحديثة (مثل Vite وWebpack‏) بصمة محتوى الملف إلى اسمه مباشرة (مثل app.8f9d1a.css‏):

  • الملفات الثابتة المختومة بالبصمة (.css و.js‏): تُعطى صلاحية سنة كاملة مع immutable.
  • صفحة المستند الرئيسية (HTML‏): تُضبط بالتوجيه Cache-Control: no-cache ليتحقق المتصفح منها دائماً. وفور تعديل كود التنسيق، يتغير اسم الملف في البناء الجديد إلى app.c4e29b.css داخل صفحة HTML، فيتعامل معه المتصفح كرابط جديد تماماً ويجلبه على الفور!

Static Asset Versioning Headerرأس إصدار الملفات الثابتة

تخزين الملفات الثابتة لعام كامل مع ربط أسماء الملفات ببصمة المحتوى للتحديث الفوري.

Shell
<link rel="stylesheet" href="/css/app.a8f2c1.css">

# Server response header for hashed assets:
HTTP/1.1 200 OK
Cache-Control: public, max-age=31536000, immutable

Immutable Cache Busting Previewمعاينة تخزين الموارد الثابتة

معاينة تفاعلية توضح سرعة استرجاع الملفات الثابتة فورياً من الذاكرة المحلية دون اتصال شبكي.

لبناء سياسة تخزين مؤقت احترافية تجمع بين السرعة القصوى وحماية خصوصية المستخدمين من تسرب البيانات في الخوادم الوسيطة، طبّق القواعد الهندسية الثلاث الآتية:

  • الفئة الأولى — الملفات الثابتة المختومة بالبصمة (app.8f9d1a.js والخطوط والصور): استخدم التوجيه Cache-Control: public, max-age=31536000, immutable؛ فهي عامة وآمنة للتخزين لمدة عام كامل لأن أي تعديل سيغير رابطها تلقائياً.
  • الفئة الثانية — صفحات HTML العامة والملفات غير المختومة: استخدم التوجيه Cache-Control: no-cache مع حقل البصمة ETag ليضمن المتصفح عرض أحدث نسخة دائماً مع توفير البيانات عبر الكود 304 Not Modified.
  • الفئة الثالثة — صفحات الحسابات الشخصية والعمليات المالية (/account و/checkout‏): استخدم دائماً التوجيه الصارم Cache-Control: no-store, private لمنع حفظ أي بيانات خاصة في شبكات CDN أو على الأقراص المشتركة.
  • Cache-Control: public, max-age=31536000, immutable
  • Cache-Control: no-cache
  • ETag: "page-v14-9c2a"
  • Cache-Control: no-store, private
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

تعلّمنا في هذا الدرس آلية عمل التخزين المؤقت في HTTP ودوره في تسريع المواقع وتخفيف الحمل عن الخوادم، والفرق المعماري بين الكاش الخاص (Private‏) والكاش المشترك (Shared‏)، وحساب عمر النسخة بين الحالتين Fresh وStale، والفرق الدقيق بين no-cache وno-store، وآلية التحقق الشرطي عبر ETag وكود 304 Not Modified، واستراتيجية كسر الكاش (Cache Busting‏). الخطوة التالية: انتقل الآن إلى الدرس التالي أساسيات أمان HTTP (HTTP Security Basics‏) لنستكشف المخاطر الأمنية في اتصالات الويب وكيف نحصّن تطبيقاتنا عبر حقول الرأس الأمنية الدفاعية!

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات12

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 12 مفهومةأول بطاقة، أول خطوة
01 HTTP Caching التخزين المؤقت في HTTP
الاحتفاظ بنسخ صالحة لإعادة الاستخدام من استجابات الخادم في ذاكرة المتصفح أو الخوادم الوسيطة لتسريع تلبية الطلبات المتكررة.
للمراجعة
02 Private Cache الكاش الخاص
ذاكرة تخزين مؤقت مخصصة لمستخدم واحد داخل متصفحه الشخصي وتُضبط عبر التوجيه Cache-Control: private.
للمراجعة
03 Shared Cache الكاش المشترك
ذاكرة تخزين مؤقت في خادم وسيط أو شبكة CDN تخدم آلاف المستخدمين المشتركين وتُضبط عبر public وs-maxage.
للمراجعة
04 Fresh Response النسخة الطازجة (الصالحة)
استجابة مخزنة لم يتجاوز عمرها الحالي مدة الصلاحية المحددة في max-age ويمكن استخدامها فوراً دون الاتصال بالخادم.
للمراجعة
05 Stale Response النسخة المنتهية الصلاحية
استجابة مخزنة انتهت مدة صلاحيتها الزمنية وتتطلب إعادة التحقق الشرطي مع الخادم الأصلي قبل إعادة استخدامها.
للمراجعة
06 Cache-Control: no-cache توجيه التحقق الإلزامي no-cache
يسمح بحفظ الاستجابة في الكاش، لكنه يلزم المتصفح بالتحقق الشرطي من الخادم الأصلي قبل استخدامها في كل مرة.
للمراجعة
07 Cache-Control: no-store توجيه منع الحفظ النهائي no-store
يمنع المتصفح وأي خادم وسيط منعاً باتاً من حفظ أي جزء من الاستجابة في الذاكرة أو القرص الصلب.
للمراجعة
08 ETag (Entity Tag) بصمة الكيان ETag
معرّف نصي أو بصمة رقمية يضعها الخادم في رأس الاستجابة لتمييز كل إصدار محدد من محتوى الملف بدقة.
للمراجعة
09 If-None-Match Header حقل الرأس الشرطي If-None-Match
حقل رأس شرطي يرسله المتصفح متضمناً قيمة ETag المحفوظة لديه لسؤال الخادم إن كان الملف قد تغير.
للمراجعة
10 304 Not Modified كود الحالة 304 Not Modified
كود استجابة بدون جسم رسالة يؤكد للمتصفح أن النسخة المخزنة لديه لا تزال مطابقة للأصل ويجدد صلاحيتها.
للمراجعة
11 Cache Busting كسر الكاش بالبصمة
تضمين بصمة محتوى الملف في اسمه ورابطه لإجبار المتصفح على جلب النسخة المحدثة فوراً عند نشر تعديل جديد.
للمراجعة
12 Vary Header حقل الرأس Vary
حقل رأس يوجّه ذواكر الكاش المشتركة لحفظ نسخ منفصلة بحسب خصائص الطلب مثل نوع الضغط في Accept-Encoding.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات5

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 5 مفهومةأول بطاقة، أول خطوة
01 CDN CDN
Content Delivery Network
شبكة توصيل المحتوى المكونة من خوادم كاش مشتركة موزعة جغرافياً لتقديم الملفات من أقرب نقطة للمستخدم.
للمراجعة
02 TTL TTL
Time To Live
مدة البقاء أو الصلاحية بالثواني التي تظل خلالها النسخة المخزنة صالحة للاستخدام المباشر.
للمراجعة
03 ETag ETag
Entity Tag
وسم الكيان الذي يمثل البصمة الفريدة لإصدار الملف والمستخدم في التحقق الشرطي.
للمراجعة
04 LCP LCP
Largest Contentful Paint
مؤشر قياس سرعة رسم أكبر عنصر مرئي في الصفحة، ويتحسن بشكل كبير بفضل التخزين المؤقت.
للمراجعة
05 RFC RFC
Request for Comments (RFC 9111)
سلسلة وثائق المعايير القياسية للإنترنت، ويختص المعيار RFC 9111 بتوثيق قواعد التخزين المؤقت في HTTP.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/3مهام منجزة
  1. افتح تبويب Network في أدوات المطورين مع إلغاء تفعيل Disable cache، وحمّل الصفحة مرتين لملاحظة الملفات التي تُجلب من memory cache أو disk cache أو تُرجع 304 Not Modified.

  2. نفّذ الأمر curl -I على رابط ملف ثابت لنسخ قيمة ETag الخاصة به، ثم أرسل طلباً شرطياً عبر curl -i -H 'If-None-Match: "<etag>"' وتحقق من استلام استجابة 304 Not Modified بدون جسم رسالة.

  3. اكتب الصيغة القياسية لحقل الرأس Cache-Control لكلٍّ من: (1) ملف ثابت مختوم بالبصمة app.9a8b.js، و(2) صفحة عامة /index.html، و(3) صفحة بيانات مالية خاصة /account/billing.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

12أسئلة 1أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي12 أسئلة تنتظرك
01

ما رقم الوثيقة القياسية الرسمية (IETF RFC) التي تحدد معمارية وقواعد التخزين المؤقت في HTTP؟

02

كيف يؤثر تقديم استجابة صالحة (Fresh) مباشرة من الكاش المحلي للمتصفح على زمن تأخير الشبكة وحمل الخادم الأصلي؟

03

لماذا يجب ضبط الاستجابات التي تتضمن بيانات خاصة بالمستخدم بالتوجيه "Cache-Control: private" (أو "no-store") بدلاً من "public"؟

04

إذا تضمنت استجابة HTTP التوجيه "Cache-Control: public, max-age=3600" وأرفق معها خادم CDN حقل الرأس "Age: 1000"، فكم ثانية تتبقى من صلاحية النسخة (Freshness)؟

05

أيّ توجيه داخل حقل Cache-Control يحدد مدة صلاحية مخصصة حصرياً لذواكر الكاش المشتركة (CDNs) ويتجاوز قيمة max-age لديها؟

06

ما الفرق الهندسي الدقيق في السلوك بين التوجيهين "Cache-Control: no-cache" و"Cache-Control: no-store"؟

07

عندما يتحقق المتصفح شرطياً من استجابة مخزنة كانت تحمل البصمة ETag: "v2-8f9d1a"، فما حقل الرأس الذي يرسله المتصفح في طلبه إلى الخادم؟

08

ما كود الحالة وجسم الرسالة اللذان يرجعهما الخادم الأصلي عندما تتطابق بصمة If-None-Match في الطلب الشرطي مع النسخة الحالية للملف؟

09

ماذا يفعل تفعيل خيار "Disable cache" داخل تبويب Network في أدوات المطورين أثناء تطوير الموقع؟

10

كيف تتيح تقنية كسر الكاش (Cache Busting) تخزين ملفات CSS وJS لمدة عام كامل (immutable) مع ضمان وصول أي تحديث جديد للمستخدمين فوراً؟

11

لماذا ترسل الخوادم حقل الرأس "Vary: Accept-Encoding" إلى ذواكر الكاش المشتركة؟

12

ما سياسة Cache-Control الإلزامية لصفحات البيانات الحساسة مثل كشوف الحسابات البنكية أو إعدادات الحساب الشخصي؟