قواعد Cloudflare Cache التي تخفض تكلفة الخادم دون عرض بيانات خاطئة
القرار المباشر: خزّن الملفات الثابتة والصفحات أو الاستجابات العامة صراحة. تجاوز الحساب والسلة والدفع والمعاينة والإدارة والمحتوى الشخصي. اجعل مفتاح الكاش والتفريغ جزءاً من عقد التطبيق.
هذه المقالة لا تقدم مزوداً فائزاً لكل الحالات ولا رقماً سحرياً للسعة أو التكلفة. تقدم طريقة قابلة للمراجعة، ثم تطلب قياسها على عبء العمل الحقيقي. راجعت المصادر الرسمية في 2026-08-28، وأي مقارنة مع Google Cloud هنا مبنية على الوثائق وليست ادعاء خبرة تشغيل مباشرة.
القرار في دقيقة
- صنف كل مسار حسب حساسية البيانات والتوثيق والكوكيز والاستعلام والطريقة وسبب التفريغ.
- دع Cache-Control من الأصل يصف معنى المحتوى ثم استخدم Cache Rules لسياسة الحافة المقصودة.
- استبعد Authorization وكوكيز الجلسة قبل أي قاعدة عامة لتخزين كل شيء.
- استخدم روابط بأرقام إصدار للملفات، ووسوم كاش أو روابط محددة للمحتوى المتغير، واترك purge everything للطوارئ.
- تحقق من MISS وHIT وBYPASS وDYNAMIC وAge وVary وSet-Cookie وعدد طلبات الأصل.
إذا لم يستطع الفريق الإجابة عن هذه النقاط، فالمشكلة ليست نقص خدمة سحابية. المشكلة أن عقد التشغيل لم يكتمل بعد. اكتب الافتراضات، وافصل المعلومة المؤكدة عن الحساب التقريبي، وحدد ما سيقاس قبل الشراء أو النشر.
الأداة القابلة لإعادة الاستخدام
| البند | القرار | دليل القبول |
|---|---|---|
| /_astro/* أو /assets/* | مؤهل للكاش | سنة مع اسم ملف غير متغير |
| /blog/* العام | مؤهل للكاش | احترام الأصل أو TTL قصير مع تفريغ |
| /api/public/* | فقط إن كانت الاستجابة متطابقة | مفتاح واضح وTTL حسب الحالة |
| /account و/cart و/checkout | تجاوز | لا يدخل كاش مشترك |
| جلسة أو Authorization | تجاوز | القاعدة قبل التخزين العام |
ضع هذه المصفوفة داخل قرار المعمارية أو تذكرة التنفيذ. كل صف بلا مالك أو دليل قبول هو خطر مؤجل.
كيف تستخدم الأداة فعلياً
1. /_astro/* أو /assets/*
القرار المقترح هنا هو: مؤهل للكاش، سنة مع اسم ملف غير متغير. لا تنسخ القيمة بلا سياق. اكتب مصدر المدخل والبيئة التي ينطبق عليها ومالكها وتاريخ مراجعتها. حوّلها إلى فحص يمكن تكراره قبل النشر وبعده، وسجل الحالة الخاطئة التي يجب أن يرفضها النظام. إذا تغيرت البيانات أو المنطقة أو نمط الحركة، افتح القرار من جديد بدلاً من افتراض أن الإعداد القديم ما زال مناسباً.
2. /blog/* العام
القرار المقترح هنا هو: مؤهل للكاش، احترام الأصل أو TTL قصير مع تفريغ. لا تنسخ القيمة بلا سياق. اكتب مصدر المدخل والبيئة التي ينطبق عليها ومالكها وتاريخ مراجعتها. حوّلها إلى فحص يمكن تكراره قبل النشر وبعده، وسجل الحالة الخاطئة التي يجب أن يرفضها النظام. إذا تغيرت البيانات أو المنطقة أو نمط الحركة، افتح القرار من جديد بدلاً من افتراض أن الإعداد القديم ما زال مناسباً.
3. /api/public/*
القرار المقترح هنا هو: فقط إن كانت الاستجابة متطابقة، مفتاح واضح وTTL حسب الحالة. لا تنسخ القيمة بلا سياق. اكتب مصدر المدخل والبيئة التي ينطبق عليها ومالكها وتاريخ مراجعتها. حوّلها إلى فحص يمكن تكراره قبل النشر وبعده، وسجل الحالة الخاطئة التي يجب أن يرفضها النظام. إذا تغيرت البيانات أو المنطقة أو نمط الحركة، افتح القرار من جديد بدلاً من افتراض أن الإعداد القديم ما زال مناسباً.
4. /account و/cart و/checkout
القرار المقترح هنا هو: تجاوز، لا يدخل كاش مشترك. لا تنسخ القيمة بلا سياق. اكتب مصدر المدخل والبيئة التي ينطبق عليها ومالكها وتاريخ مراجعتها. حوّلها إلى فحص يمكن تكراره قبل النشر وبعده، وسجل الحالة الخاطئة التي يجب أن يرفضها النظام. إذا تغيرت البيانات أو المنطقة أو نمط الحركة، افتح القرار من جديد بدلاً من افتراض أن الإعداد القديم ما زال مناسباً.
5. جلسة أو Authorization
القرار المقترح هنا هو: تجاوز، القاعدة قبل التخزين العام. لا تنسخ القيمة بلا سياق. اكتب مصدر المدخل والبيئة التي ينطبق عليها ومالكها وتاريخ مراجعتها. حوّلها إلى فحص يمكن تكراره قبل النشر وبعده، وسجل الحالة الخاطئة التي يجب أن يرفضها النظام. إذا تغيرت البيانات أو المنطقة أو نمط الحركة، افتح القرار من جديد بدلاً من افتراض أن الإعداد القديم ما زال مناسباً.
تسلسل التنفيذ
- صنف كل مسار حسب حساسية البيانات والتوثيق والكوكيز والاستعلام والطريقة وسبب التفريغ. ابدأ في بيئة غير إنتاجية، واجعل نتيجة الخطوة 1 ملفاً أو إعداداً أو مقياساً قابلاً للمراجعة.
- دع Cache-Control من الأصل يصف معنى المحتوى ثم استخدم Cache Rules لسياسة الحافة المقصودة. ابدأ في بيئة غير إنتاجية، واجعل نتيجة الخطوة 2 ملفاً أو إعداداً أو مقياساً قابلاً للمراجعة.
- استبعد Authorization وكوكيز الجلسة قبل أي قاعدة عامة لتخزين كل شيء. ابدأ في بيئة غير إنتاجية، واجعل نتيجة الخطوة 3 ملفاً أو إعداداً أو مقياساً قابلاً للمراجعة.
- استخدم روابط بأرقام إصدار للملفات، ووسوم كاش أو روابط محددة للمحتوى المتغير، واترك purge everything للطوارئ. ابدأ في بيئة غير إنتاجية، واجعل نتيجة الخطوة 4 ملفاً أو إعداداً أو مقياساً قابلاً للمراجعة.
- تحقق من MISS وHIT وBYPASS وDYNAMIC وAge وVary وSet-Cookie وعدد طلبات الأصل. ابدأ في بيئة غير إنتاجية، واجعل نتيجة الخطوة 5 ملفاً أو إعداداً أو مقياساً قابلاً للمراجعة.
لا تنقل الإعداد يدوياً بين البيئات. ضع السياسة والبنية ومسار النشر تحت التحكم بالإصدار عندما تسمح الخدمة، وافصل سر الإنتاج عن Build. يجب أن يتمكن شخص آخر من إعادة الخطوات من المستودع وRunbook دون معرفة مخفية.
عقد التسليم بين DevOps والمطورين
يبدأ التسليم بطلب قابل للتنفيذ: ما Commit أو Digest المطلوب؟ ما المتغيرات غير السرية؟ ما أسماء الأسرار ومن يملكها دون نسخ قيمها في التذكرة؟ ما فحص الصحة؟ ما الترحيل؟ وما السلوك المقبول عند فشل الاعتماد الخارجي؟ يجب أن يرفق المطور طريقة تشغيل محلية أو في بيئة اختبار، وعينة إعداد آمنة، واختبارات المسارات الحرجة، وأثر التغيير على البيانات والتوافق للخلف.
يعيد مسؤول DevOps عنوان البيئة وحدود الصلاحية ومسار السجلات ولوحة القياس ومدة الاحتفاظ وخطة النشر والرجوع. قبل الموافقة يتفق الطرفان على مسؤول مراقبة الإصدار ومدة نافذة القرار وحد الإحصائي الذي يوقف Canary أو يعيد النسخة. بعد النشر لا تكفي رسالة «تم». أرفق Digest المنشور ووقت النشر ونتيجة Smoke والرابط الفعلي وحالة الترحيل وأي انحراف مقبول مع تذكرة متابعة. هذا العقد يمنع أن يصبح فشل الإعداد مشكلة مجهولة بين فريقين.
أمر أو إعداد للتحقق
curl -sI https://example.com/assets/app.abc123.css | grep -Ei 'cf-cache-status|age|cache-control|vary|set-cookie'
curl -sI -H 'Cookie: session=test' https://example.com/account | grep -Ei 'cf-cache-status|cache-control|set-cookie'
أنماط الفشل التي يجب تصميم الاختبار حولها
تخزين HTML يتغير حسب الكوكيز دون تمثيل الاختلاف الآمن في المفتاح.
لا يعتمد هذا القرار قبل تحديد المالك والبيئة وحد النجاح. سجّل الإعداد الفعلي أو Digest أو استعلام السجل الذي يثبته، ثم أضف اختبار فشل متعمداً يوضح أن الضابط يرفض الحالة الخطأ. بهذه الطريقة تتحول النصيحة إلى عقد تشغيل يمكن للمطور ومسؤول DevOps ومراجع الأمان قراءته بالطريقة نفسها.
رفع Browser TTL بحيث لا يستطيع تفريغ الحافة إزالة النسخة الموجودة في متصفح الزائر.
لا يعتمد هذا القرار قبل تحديد المالك والبيئة وحد النجاح. سجّل الإعداد الفعلي أو Digest أو استعلام السجل الذي يثبته، ثم أضف اختبار فشل متعمداً يوضح أن الضابط يرفض الحالة الخطأ. بهذه الطريقة تتحول النصيحة إلى عقد تشغيل يمكن للمطور ومسؤول DevOps ومراجع الأمان قراءته بالطريقة نفسها.
تجاهل كاش 404 و500 وتمديد العطل بخطأ مخزن.
لا يعتمد هذا القرار قبل تحديد المالك والبيئة وحد النجاح. سجّل الإعداد الفعلي أو Digest أو استعلام السجل الذي يثبته، ثم أضف اختبار فشل متعمداً يوضح أن الضابط يرفض الحالة الخطأ. بهذه الطريقة تتحول النصيحة إلى عقد تشغيل يمكن للمطور ومسؤول DevOps ومراجع الأمان قراءته بالطريقة نفسها.
قياس نسبة HIT دون التحقق من انخفاض تكلفة الأصل وزمنه وصحة المحتوى.
لا يعتمد هذا القرار قبل تحديد المالك والبيئة وحد النجاح. سجّل الإعداد الفعلي أو Digest أو استعلام السجل الذي يثبته، ثم أضف اختبار فشل متعمداً يوضح أن الضابط يرفض الحالة الخطأ. بهذه الطريقة تتحول النصيحة إلى عقد تشغيل يمكن للمطور ومسؤول DevOps ومراجع الأمان قراءته بالطريقة نفسها.
بوابات الاختبار والنشر
ابن مصفوفة صغيرة تربط كل خطر باختبار ومالك ودليل. اختبر المسار السليم، ثم اختبر الرفض أو الفشل المتوقع. افصل نجاح المصدر عن نجاح البناء، ونجاح البناء عن نشر المزود، ونشر المزود عن استجابة الرابط العام. وفي الأنظمة التي تتعامل مع بيانات أو طوابير، أضف سلامة البيانات وعمر الطابور إلى فحص الصحة.
قبل الإنتاج شغّل الاختبارات الحتمية في CI، واختبارات البيئة والترحيل وSmoke في CD، ثم تحقق من الرحلة الحرجة على الرابط الفعلي. عرّف حد إيقاف تلقائياً لمعدل الخطأ أو p95 أو فشل الاعتماد، واحتفظ بالنسخة السابقة وإجراء استعادة البيانات. النجاح هو دليل يمكن قراءته، لا لون أخضر وحده.
التكلفة دون رقم تسويقي
احسب الحوسبة والتخزين والطلبات ونقل البيانات والسجلات والنسخ الاحتياطية والمفاتيح والدعم والسعة الاحتياطية ووقت المهندس. استخدم أسعار المنطقة الفعلية في يوم القرار، ثم شغّل إنذار ميزانية ومراقبة شذوذ. لا تجعل خفض التكلفة يزيل هامش الفشل أو يطيل RTO بلا موافقة.
أفضل تحسين تكلفة هو حذف مورد لا تحتاجه أو تقليل عمل الأصل بقياس صحيح. أما الحجز أو الالتزام طويل الأجل فيأتي بعد ثبات الحمل. اكتب وحدة القياس لكل بند، ومن يراجعها، وما الذي يحدث إذا تجاوزت الحد.
ملاحظة من التشغيل
الدرس القابل للتعميم هو أن الحالات المختلفة لا تتساوى: الكود في المستودع، والنسخة المبنية، وحالة المزود، واستجابة المتصفح، وسلامة البيانات لكل منها دليل مستقل. كثير من الأعطال تطول لأن الفريق يرى خطوة ناجحة ويفترض أن السلسلة كلها نجحت. احفظ التوقيت والهوية والمسار والإعداد الفعلي قبل توسيع الصلاحية أو تغيير عدة طبقات معاً.
هذه ملاحظة مجهولة لا تكشف عميلاً أو حساباً أو نتيجة رقمية. فائدتها في الإجراء: غيّر شيئاً واحداً قابلاً للرجوع، راقب الإشارة المتوقعة، ثم حدّث الخط الزمني.
الخطوات العملية التالية
- انسخ الأداة أعلاه واملأها بأرقام النظام ومسؤوليه لا بتوقعات المبيعات.
- اختر أخطر فرضيتين ونفذ لهما اختبار فشل واستعادة في بيئة غير إنتاجية.
- سجل القرار والبدائل والتكلفة ودليل القبول وتاريخ المراجعة.
- اربط هذه المقالة بالمقالات الأخرى في سلسلة DevOps والسحابة واختر الخطوة التالية حسب الفجوة.
إذا كنت تحتاج مراجعة عملية للبنية أو مسار النشر، ابدأ بنطاق صغير عبر خدمة تطوير الويب والتطبيقات يحدد المخاطر والدليل المطلوب قبل أي التزام كبير.
تابع السلسلة
- السابق: S3 بلا تسريب بيانات أو فاتورة مفاجئة: الأمان ودورة الحياة والتكلفة
- التالي: استضافة موقع ليست استضافة تطبيق: اختر البنية قبل أن تدفع
- قراءة مرتبطة من المكتبة: مقال عملي مكمل لهذا القرار
استخدم الروابط كمسار تعلم، لكن نفذ كل قرار على بيانات النظام الفعلية.
المصادر وتاريخ المراجعة
- Cloudflare Cache Rules
- Cloudflare Cache Rules settings
- Cloudflare edge and browser cache TTL
- Cloudflare purge by cache tags
- Cloudflare Smart Tiered Cache public-cloud update
آخر مراجعة: 2026-08-28. راجع الأسعار والحصص وتوافر الميزات في المنطقة مباشرة قبل التنفيذ.