محلّل ترويسات التخزين المؤقت

تعمل في المتصفح التحقق

الصق ترويسات الاستجابة لتحصل على حكم بشأن التخزين المؤقت: مدة الحداثة (freshness lifetime)، وسلوك إعادة التحقق، والتخزين المؤقت المشترك مقابل الخاص، والترويسات الخاصة بشبكات CDN، والتعارضات.

الخصوصية: تعمل هذه الأداة بالكامل في متصفحك. لا تغادر بياناتك جهازك أبداً.
جارٍ تحميل الأداة…

كيف يعمل التخزين المؤقت في HTTP؟

يتيح التخزين المؤقت في HTTP للمتصفح أو لذاكرة مشتركة (CDN أو وكيل) إعادة استخدام استجابة محفوظة بدلاً من سؤال المصدر مجدداً. تحدد Cache-Control ما إذا كان يمكن تخزين الاستجابة ولكم من الوقت (max-age وs-maxage وno-store وprivate)؛ وتتيح ETag وLast-Modified إعادة التحقق بتكلفة منخفضة عبر طلب شرطي يعيد 304 Not Modified حين لا يتغير شيء. القواعد في RFC 9111.

كيفية استخدام محلّل ترويسات التخزين المؤقت

  1. الصق ترويسات الاستجابة (استجابة خام أو مخرجات curl -I أو أسطر بصيغة «Name: value»).
  2. اختر طريقة الطلب، ورمز الحالة إذا كان النص الملصق لا يحتوي على سطر حالة.
  3. اقرأ الحكم: هل تُخزَّن الاستجابة، ولكم من الوقت، وكيف يُعاد التحقق منها.
  4. تحقق من النتائج بحثاً عن التسريبات (بيانات شخصية في ذاكرات التخزين المؤقت المشتركة) والتناقضات.
  5. انسخ السياسة المقترحة بوصفها نقطة انطلاق وعدّل المدد بما يناسبك.

مزايا محلّل ترويسات التخزين المؤقت

  • يشرح كل توجيه في Cache-Control ويحسب مدة الحداثة من max-age أو s-maxage أو الفرق Expires − Date
  • أحكام منفصلة لذاكرات التخزين المؤقت في المتصفحات وذاكرات التخزين المؤقت المشتركة (شبكات CDN والوكلاء)
  • سلوك إعادة التحقق استناداً إلى ETag / Last-Modified وstale-while-revalidate وstale-if-error
  • تحليل Vary: توقّع Accept-Encoding، وتجزئة الذاكرة بسبب Cookie/User-Agent، وتحذيرات Vary: *
  • تفسير ترويسات CDN: cf-cache-status وx-cache وx-vercel-cache وCDN-Cache-Control وSurrogate-Control وAge
  • اكتشاف التعارضات (no-store مع max-age، وpublic مع private، والاستجابات المصادَق عليها القابلة للتخزين المؤقت) واقتراح سياسة مناسبة

مثال على محلّل ترويسات التخزين المؤقت

استجابة عامة تضبط ملف تعريف ارتباط

الإدخال:

Cache-Control: public, max-age=600, s-maxage=3600
ETag: W/"5f8d-1a2b3c"
Vary: Accept-Encoding, Cookie
Age: 240
cf-cache-status: HIT
Set-Cookie: session=abc123; Path=/; HttpOnly

النتيجة:

Verdict: Cacheable: fresh for 10 min in browsers and 1 h in shared caches.
Age: 4 min — shared caches: 56 min of freshness remaining · browsers: 6 min remaining
High — Cache-Control: The response sets a cookie but is cacheable by shared caches — personal data may be served to other users.
Medium — Vary: Vary on Cookie fragments the cache into thousands of variants.
cf-cache-status HIT: Cloudflare served the response from its edge cache.
تبقى النسخة نفسها حديثة 10 دقائق في المتصفحات مقابل ساعة كاملة في الذاكرات المشتركة، ولأنها تضبط ملف تعريف ارتباط فاحتفاظ هذه الذاكرات بها تسريبٌ تعدّه الأداة نتيجة عالية الخطورة.

ذاكرة تخزين المتصفح المؤقتة: max-age=600

المحور من 0 min إلى 60 min
  • 0–10 minحديثة
  • > 10 minقديمة: إعادة التحقق
  1. 14 min العمر (Age)تُطرح من max-age: تبقى 6 دقائق من الحداثة في المتصفح.

الذاكرة المؤقتة المشتركة (CDN/الوكيل): s-maxage=3600

المحور من 0 min إلى 60 min
  • 0–60 minحديثة رغم ملف تعريف الارتباط: قد تصل إلى مستخدمين آخرينفشل
  • > 60 minقديمة: إعادة التحقق
  1. 14 min العمر (Age)تُطرح من s-maxage: تبقى 56 دقيقة من الحداثة في الذاكرات المشتركة.

تتجاهل المتصفحات s-maxage، وتستخدمه الذاكرات المشتركة بدلاً من max-age. يُعاد التحقق من النسخة القديمة (stale) بـ If-None-Match، وتجدّدها الاستجابة 304 إن لم يتغير شيء. السياسة المقترحة هنا: Cache-Control: private, no-cache.

الأسئلة الشائعة حول محلّل ترويسات التخزين المؤقت

ما الذي يحدّد مدة الحداثة؟

Cache-Control: s-maxage (لذاكرات التخزين المؤقت المشتركة) ثم max-age، ثم Expires مطروحاً منه Date. وبعد انقضاء تلك المدة تصبح النسخة قديمة (stale) ويجب إعادة التحقق منها أو إعادة جلبها.

ما الفرق بين no-cache وno-store؟

يعني no-store عدم تخزين الاستجابة في أي مكان على الإطلاق؛ أما no-cache فيعني جواز تخزينها لكن مع وجوب إعادة التحقق منها لدى الخادم الأصلي قبل كل إعادة استخدام.

لماذا تُعدّ Vary مهمة؟

تحتفظ ذاكرات التخزين المؤقت بنسخة واحدة لكل تركيبة مختلفة من ترويسات الطلب المدرجة. Vary: Accept-Encoding أمر متوقَّع؛ أما Vary: Cookie أو User-Agent فيجزّئ الذاكرة ويقضي على نسب الإصابة (hit ratio).

ما ترويسات CDN التي تُشرح؟

cf-cache-status وx-cache وx-cache-hits وx-served-by وx-vercel-cache وCDN-Cache-Control وCloudflare-CDN-Cache-Control وSurrogate-Control وAge وعدة ترويسات أخرى.

هل يرصد تسريبات البيانات الشخصية؟

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

ملاحظات تقنية

تتبع الحداثة ترتيب الأولوية في RFC 9111: ينطبق s-maxage على الذاكرات المشتركة فقط ويتقدّم فيها على max-age؛ ويتقدّم max-age على Expires؛ ويعني تاريخ Expires غير الصالح أن النسخة «قديمة أصلاً». وتُطرح قيمة Age من كل مدة على حدة، فتعرض الأداة بشكل منفصل المدة التي تبقى فيها النسخة حديثة في الذاكرات المشتركة وفي المتصفحات (التي تتجاهل s-maxage).

يُبلَّغ عن التخزين المؤقت الاستدلالي (heuristic) عندما تصل حالة قابلة للتخزين المؤقت افتراضياً (200 و203 و204 و206 و300 و301 و308 و404 و405 و410 و414 و501) دون معلومات صريحة عن الحداثة — فقد تفترض الذاكرات عندئذٍ مدة من تلقاء نفسها، تساوي عادةً 10% من عمر Last-Modified.

المراجع

  • RFC 9111: HTTP CachingIETF · 2022كيف تحدد Cache-Control وExpires وETag والمتحقِّقات ما إذا كان يمكن تخزين الاستجابة وإعادة استخدامها.
  • HTTP caching — MDNMDN Web Docs (Mozilla)التخزين المؤقت الخاص مقابل المشترك، والحداثة، والتحقق عبر ETag / Last-Modified، وأنماط Cache-Control الشائعة.