CDN وتخزين الحافة
CDN والتخزين المؤقت للحافة
1) الأهداف
يقلل CDN (شبكة توصيل المحتوى) من زمن الوصول والحمل عند المنشأ: يخبئ المحتوى الثابت والديناميكي المشروط على العقد الحافة، ويوفر النطاق والاستقرار والأمن (DDoS/WAF)، ويضيف منطق الحافة (إعادة كتابة الردود/الطلبات، والمصادقة، A/B).
2) نموذج ومفاتيح ذاكرة التخزين المؤقت
Ключ кеша = «مخطط + مضيف + مسار + ؟»
يوصى بما يلي:- تطبيع الاستفسار ("utm _' expend، leave" v "،" lang "،" country "، إلخ).
- تقليل «Vary» (على سبيل المثال، «Vary: Accept-Encoding، Accept-Language»)، تجنب «Vary:».
- لواجهة برمجة التطبيقات - مفتاح من معرف المسار + الإصدار (نصف، هاش، معرف البناء) + الاستعلام/الرؤوس الضرورية (على سبيل المثال، "X-Tenant').
- للصفحات المخصصة - تقسيم الحافة (بواسطة ملف تعريف الارتباط/geo) أو Skip-Cache.
3) سياسات TTL والرؤوس
العناوين الأساسية:- 'Cache-Control: public, max-age = 300, s-maxage = 3600, while-whine-revalidate = 60, fale-if-rorre = 300'
- «التحكم البديل» (إذا تم دعمه) هي سياسة منفصلة لـ CDNs بخلاف المتصفح.
- «ETag »/« آخر تعديل» - الطلبات المشروطة (304) ومدخرات حركة المرور.
- للخاص: «Cache-Control: private، no store»، إن لم يكن مخبأ.
- واجهات برمجة التطبيقات التي تسمح بذاكرة التخزين المؤقت: «Cache-Control: public، s-maxage = 60» + مفتاح الإصدار.
النهج الموصى به: الموارد «الأبدية» (مع بصمة في اسم الملف) → 'الحد الأقصى للعمر = 31536000، غير قابل للتغيير' ؛ «pages/JSON» → short TTL + SWR.
4) الإعاقة: التطهير/التطهير الناعم
التطهير بواسطة URL: نقطة.
التطهير حسب العلامة/المفتاح: عمليات التطهير الجماعية (استخدم «المفتاح البديل: المنتجات: 42 فئة: الطعام»).
التطهير الناعم: يشير إلى المحتوى «القديم»، وتعطي الحافة قديمة حتى يتم استلام إصدار جديد.
إحماء «دافئ»: بعد الانتشار، اسحب الصفحات الرئيسية من المناطق.
5) أنماط أداء الحافة
Stale-While-Revalidate: استجابة سريعة بنسخة «قديمة» + تحديث خلفية.
Prefetch of cargian resources (preload, preconce, dns-pretch).
الضغط: gzip/br (للنص)، zstd إذا تم دعم CDN.
HTTP/2/3 (QUIC): تعدد الإرسال وكمون أقل.
استئناف جلسة TLS وتدبيس OCSP على المحيط.
6) الصور ومقاطع الفيديو
تحسين الصورة عند الحافة: resize/format التفاوض ('Accept: image/avif, webp'), авто-WebP/AVIF, DPR- варианты.
كسول الحمل и سريع الاستجابة ("srcset'،" أحجام ").
فيديو: HLS/DASH، MP4 مجزأ، درع المنشأ (ذاكرة التخزين المؤقت المركزية) لتقليل العواصف.
خدمات الصور المصغرة وعناوين URL الموقعة للصور الخاصة.
7) أمن المحيط
WAF: قواعد OWASP، حظر البلد/ASN، حدود السعر مع المفتاح (IP + cookie + token).
DDoS: تنظيف L3/4، مدققات L7، تحديات JS/الباب الدوار.
توقيع عناوين URL/ملفات تعريف الارتباط للموارد الخاصة (فيديو/تقارير): TTL + HMAC/EdDSA.
المبارزة الجغرافية والامتثال (على سبيل المثال، حظر المناطق).
8) حساب الحافة (المنطق عند الحافة)
القضايا:- التخصيص دون كسر ذاكرة التخزين المؤقت: يتم تخزين المقاطع (A/B) والجغرافيا واللغة على الحافة والمحتوى.
- إعادة كتابة الإجابات/العناوين، إعادة التوجيه، انقسامات AB.
- المصادقة القائمة على الرمز: التحقق من توقيع JWT، إلزام المفتاح.
- كناري من ملف تعريف الارتباط/بالمائة: جزء من حركة المرور إلى الواجهة الخلفية الجديدة.
تشمل الأمثلة على التكنولوجيا Cloudflare Workers/Durable Objects و Fastly Compute @ Edge و AWS Lambda @ Edge.
9) متعدد CDN والمحيط العالمي
الأسباب: التغطية، وجيش تحرير السودان، والتكلفة، والقيود الإقليمية، وعزل الحوادث.
GSLB/توجيه حركة المرور: بشأن الأخطاء الجغرافية/زمن الانتقال/الأخطاء الحقيقية ؛ الفحوصات الصحية من وجهات نظر متعددة.
نظام المفتاح/الرأس الفردي (المفتاح البديل)، قواعد التطهير المتزامنة.
الدرع الأصلي شائع لجميع CDNs حتى لا «تضرب» الأصل من ذوي الإعاقة.
10) قطع الأشجار والمقاييس
جمع:- نسبة الضرب (مخبأ، CDN → حافة/أصل)، نسبة ضرب البايت.
- Latency p50/p95/p99، معدل الخطأ حسب الرمز/المسار.
- إحضار الأصل: RPS/bytes/الأخطاء (الحماية من الأخطاء الزائدة).
- الرسوم البيانية الإقليمية (حسب POP/ASN/country).
- تكامل مع قابلية الرصد: Prometheus (سحب عبر المصدرين)، Grafana/OTel (دفع من سجلات الحافة).
11) SEO и SPA/SSR
صفحات SEO مع SWR و TTL القصيرة سريعة وجديدة.
Sitemap/robots - نختبئ لفترة طويلة، لكننا نسمح بالتطهير الناعم.
عامل الخدمة: التخزين المؤقت غير المتصل بالإنترنت، ومقدمة المسارات الحرجة، والتحديثات المستهدفة.
12) عينات التكوينات والرؤوس
12. 1 نبذات عن التحكم في المخبأ
ثابت ببصمة الإصبع:
Cache-Control: public, max-age=31536000, immutable
HTML/SSR:
Cache-Control: public, max-age=60, s-maxage=600, stale-while-revalidate=60, stale-if-error=600
Surrogate-Control: max-age=600, stale-while-revalidate=120
API (واجهة متجر مخبأة):
Cache-Control: public, s-maxage=60
Vary: Accept-Encoding
12. 2 NGINX (الأصل) - تطبيع الاستعلام/الرؤوس
nginx map $arg_utm_source $utm_skip { default 1; "" 0; }
map $args $normalized_args {
default "";
"~(^ &)v=([a-z0-9]+)(& $)" "v=$2";
}
proxy_cache_key "$scheme://$host$request_uri?$normalized_args";
add_header Surrogate-Key "product:{{id}} category:{{cat}}";
12. 3 Fastly VCL - تطهير ناعم ومفاتيح
vcl sub vcl_recv {
set req. hash += req. http. host req. url. path;
set req. hash += querystring. decode(req. url, "v,lang");
if (req. method == "PURGE") {
if (req. http. Fastly-Soft-Purge) { softpurge; } else { purge; }
return (synth(200, "purged"));
}
}
sub vcl_deliver {
set resp. http. Surrogate-Key = "product:42 category:food";
}
12. 4 عمال Cloudflare - تم التوقيع على URLs
js export default {
async fetch(req, env) {
const url = new URL(req. url);
if (url. pathname. startsWith("/private/")) {
const token = url. searchParams. get("token");
if (!token! verify(token, env. SIGNING_KEY)) return new Response("Forbidden", { status: 403 });
}
return fetch(req);
}
}
12. 5 Lambda @ Edge - خيارات الجغرافيا
js exports. handler = async (event) => {
const req = event. Records[0].cf. request;
const country = req. headers['cloudfront-viewer-country']?.[0]?.value 'US';
if (country === 'DE') req. headers['accept-language'] = [{ key:'Accept-Language', value:'de' }];
return req;
};
13) البيانات الخاصة وواجهة برمجة التطبيقات
لا تخبأ الاستجابات الخاصة أبدًا دون عزل رئيسي (لكل مستخدم/لكل رمز).
استخدم ملفات تعريف الارتباط الموقعة/الرؤوس و «تنوع: التفويض» فقط مع مراقبة صارمة (بخلاف ذلك - إخفاء المخبأ).
البديل الآمن: فصل الطبقة العامة (المخبأة) والإشتمالات الخاصة (ESI/edge composition).
14) القواعد الجغرافية/المحتوى
قيود الترخيص: الرفض الجغرافي على الحافة، والعناصر الإضافية بدلاً من منع المنشأ.
لافتات العمر/التنظيم - تقدم على حافة الهاوية (لا تثقب ذاكرة التخزين المؤقت).
15) الأنماط المضادة
«لا مخبأ، لا مخزن» للموقع بأكمله → فقدان تأثير CDN.
«اختلف» على الرؤوس غير المستقرة (على سبيل المثال، «وكيل المستخدم») → الكاردينالية.
مسح المخبأ بالكامل في كل إصدار.
TTLs قصيرة بدون SWR → عاصفة إلى المنشأ.
يتم تخزين الصفحات الشخصية بدون مفاتيح تجزئة/رمزية.
نقص درع المنشأ → العديد من الأخطاء المتوازية.
16) قائمة التنفيذ المرجعية (0-45 يوما)
0-10 أيام
تصنيف الموارد: ثابت/HTML/API.
Enable gzip/br, HTTP/2/3, query normalization, «Surrogate-Key».
أدخل SWR/IFE وتطهير القاعدة.
11-25 يومًا
Edge-image appromization (resize/format), origin-shield.
توقيع عناوين URL لوسائط الإعلام الخاصة وملامح WAF/DDoS.
لوحات القيادة: نسبة الضرب، إحضار المنشأ، p95 بواسطة POP.
26-45 يومًا
استراتيجية متعددة CDN أو GSLB، أوزان الكناري على المحيط.
Edge-compute for segmentation/AB/geo, loft-purge by keys.
الاحترار التلقائي وتكامل التطهير في CI/CD.
17) مقاييس النضج
وصلت نسبة Byte ≥ 85٪ للثابت، ≥ 60٪ للديناميكيات HTML/المشروطة.
أصل RPS مستقر عند القمم (لا «عواصف»).
p95 خفض TTFB بنسبة ≥ 30٪ عبر المناطق الرئيسية.
النسبة المئوية للاستجابات القديمة للحوادث> 90٪ (بالكاد لاحظ المستخدم).
أتمتة كاملة لمفاتيح التطهير في خطوط الأنابيب.
18)
دائرة CDN الفعالة هي المفاتيح/TTL/الخيارات، وانضباط الإعاقة، ومنطق الحافة. إضافة SWR/IFE، درع المنشأ، تحسين الوسائط، والأمن القوي (WAF، عناوين URL الموقعة). قم بتوحيد المقاييس ودمج التطهير في CI/CD - وستحصل على محيط سريع واقتصادي ومستقر، جاهز لأحمال الذروة والبجع الأسود.