Logo GH

تخزين CDN وتحسين TTL

موجز موجز

مخبأ CDN هو «مسرع + درع» بين المستخدم والمنشأ. يعمل بشكل جيد عندما:

1. مفتاح التخزين المؤقت مستقر ولا يحتوي على «ضوضاء».

2. سياسة TTL تحت العبء: 'maxage '/' max-age' + 'fale-whine-excalate/if-risror'.

3. تتم إدارة الإعاقة: من خلال العلامات/البادئات + التطهير «الناعم».

4. يتم تضمين مخبأ متدرج/درع منشأ ومخبأ سالب.

5. هناك إمكانية للملاحظة: نسبة الضرب حسب الطبقات، p95 TTFB، حصة العائد 304.

الرؤوس الأساسية وماذا تعني

«التحكم في المخبأ»:
  • "max-age = - TTL للمتصفح.
  • 's-maxage = - TTL لـ CDN/proxy (يتداخل «max-age»).
  • «cale-whine-revalidate = » - أعط تحديثًا قديمًا بالتوازي.
  • «خطأ قديم إذا كان = » - نعيد الخطأ القديم عند حدوث خطأ الأصل.
  • «قابل للتحويل» - المورد لا يتغير (مناسب للأصول المتحجرة).
  • «ETag »/« آخر تعديل» - شروط 304، حفظ البايت/أصل وحدة المعالجة المركزية.
  • «تنوع» - قائمة بالرؤوس التي تؤثر على مفتاح ذاكرة التخزين المؤقت (استخدم مع ضبط النفس!).
  • «التحكم البديل» - التحكم في مخبأ CDN «الموسع» (إذا تم دعمه).
  • «منتهية الصلاحية» - عفا عليها الزمن، لكن العملاء ما زالوا يفسرونها.
مثال (statics، السنة):

Cache-Control: public, max-age=31536000, immutable
مثال (شبه متحدث مع تقادم آمن):

Cache-Control: public, s-maxage=300, max-age=60, stale-while-revalidate=600, stale-if-error=86400
ETag: "a1c3..."

ذاكرة التخزين المؤقت للتصميم والتطبيع

الهدف هو أن تقع نفس الطلبات في نفس الشيء.

تطبيع عنوان URL: الحالة، القطع المزدوجة، القطع المتأخر، ترتيب معلمات الاستعلام.
تجاهل "الضوضاء": "utm _'،" fbclid'، "gclid'، علامات المرجع التعسفية.
تنوع محدود: فقط عناوين مهمة حقًا ("Accept-Encoding"، وأحيانًا "Accept'، و" Accept-Language "للموقع).
فئة الجهاز: إذا لزم الأمر، استخدم 2-3 فئات (الهاتف المحمول/سطح المكتب/الكمبيوتر اللوحي)، وليس فروع المستخدم - الوكيل التي لا نهاية لها.
سياق Auth: لا تخفي خصوصية افتراضيًا ؛ أو مسارات منفصلة بين القطاعين العام والخاص.

أسلوب سريع (زائف):

Surrogate-Key: product:123 catalog
Cache-Control: public, s-maxage=300, stale-while-revalidate=600
Vary: Accept-Encoding

استراتيجيات TTL حسب نوع المحتوى

نوعTTL CDN ('maxage')متصفح («الحد الأقصى للعمر»)بالإضافة إلى ذلك
الأصول المحفوظة ('/التطبيق. a1b2. js ')سنة 1سنة 1' الإعاقة غير مطلوبة
كتالوجات/صفحات هبوط1-10 دقائق30-120 ثانية«إعادة المصادقة القديمة = 10-30 мин»
الصور (ريسايز)10-60 دقيقة5-15 دقيقةVary по 'Accept' (webp/avif)
احصل على واجهات برمجة التطبيقات (مخبأ)10-120 ث0-30 ثانيةغير فاعل إلا ؛ «خطأ قديم إذا» 5-60 دقيقة
500/أخطاء مهلة00مخبأ سالب 30-120 ثانية (على مستوى CDN)، لا تخبأ 401/403/POST

سياسات الإعاقة

بواسطة URL/Prefix: "اكتساح كل شيء تحت "/static/2025-11-05/".
بواسطة علامة/مفتاح: «إزالة جميع 'الكتالوج' و 'المنتج: 123'».
التطهير الناعم: علامة على أنها عفا عليها الزمن، لا تمحو الكائن - إعادة تعبئة أسرع.
الحدث مدفوع: CI/CD أو حدث إداري يستدعي webhook «العلامات المبطلة».

التوصية: دمج كلا التكتيكين: مسارات إصدار الأصول + تطهير العلامة للمحتوى/الصفحات.

مخبأ متدرج، درع المنشأ и ما قبل الحرب

مخبأ متدرج: طبقات CDN الإقليمية → عدد أقل من طلبات المنشأ.
درع المنشأ: «درع» واحد من الملوثات العضوية الثابتة إلى المنشأ - يحسن المحلية ونسبة الإصابة.
Prewarm (ما قبل الجلب): قم بإحماء عناوين URL/المخابئ الساخنة قبل الحدث/الإصدار.
المخبأ السلبي: 5xx/Timeout المخبأ لفترة قصيرة (30-120 ثانية) حتى لا تطغى على الأصل بعاصفة من العودة.

مخبأ API: عندما تستطيع

فقط GET/HEAD و idemputent.
المفتاح: المسار + الاستفسارات الأساسية (على سبيل المثال، "؟ الفئة =... & page =... ').
التحقق: 'ETag '/' Last-Modified' and short 'maxage'.
المرشحات حسب المستخدم: إحضار التخصيص إلى وظيفة العميل/الحافة أو استخدام الطلبات الموقعة + الاستجابة «العامة».

مثال (API، 30 s + SWR):

Cache-Control: public, s-maxage=30, max-age=5, stale-while-revalidate=120, stale-if-error=600
ETag: "feed-v42"

حماية من تسمم المخبأ

التطبيع الصلب لعبارة URL/الرأس ؛ القائمة البيضاء للمعايير في المفتاح.
قص الرؤوس/النسخ المكررة المشبوهة («X-Forwarded -»، «Accept» الموسعة).
الحد من «تنوع» والتحكم في حجم/عدد الرؤوس.
فصل المجال: خاص/إداري - على اسم منفصل بدون ذاكرة تخزين مؤقت.
التحقق من صحة الردود: لا تخفي 4xx (باستثناء 404 بالنسبة للساكنة)، ولا تخبئ صفحات «المستخدم» بدون سياسة صريحة.

الضغط والتنسيقات

بروتلي للنص (js/css/json)، gzip - redback ؛ الأصول المضغوطة مسبقا مقبولة.
الصور: webp/avif حيث الدعم ؛ استخدم «Vary: Accept» + المشتقات.
طلبات المدى للفيديو/الصوت: مخابئ CDN.
التفاوض على المحتوى: حافظ على الكاردينالية الرئيسية منخفضة (فئة الجهاز بدلاً من UAs الخام).

قابلية الملاحظة و SLO

المقاييس الرئيسية

نسبة الإصابة (حسب البايت/الطلبات) на الحافة/المستوى/الدرع.
p50/95/99 TTFB حسب المنطقة والنوع (static/API).
معدل التعبئة/الخروج من الأصل - كم يذهب إلى الأصل.
304 معدل ومتوسط حجم الاستجابة.
'1' الميزانية الخاطئة: حصة قضايا 'الأخطاء التي لا معنى لها '/' الموارد الاجتماعية' ؛ تردد التطهير.

أمثلة SLO

«p95 TTFB» statics إقليميًا ≤ 120-150 مللي ثانية، API GET مخبأ ≤ 200-250 مللي ثانية.
نسبة إصابة الحافة ≥ 90٪، شبه مكبرات الصوت ≥ 60٪.
النسبة المئوية للردود من الفرع القديم مع الأخطاء ≤ 0. 5٪ في 30 يومًا.

أوراق الغش Config

Nginx (بالوكالة العكسية قبل CDN أو في PoP الذاتي)

nginx proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=CDN:512m max_size=100g inactive=7d;

map $args $clean_args {
"~(^    &)(utm_    gclid    fbclid) """; # default $ args simplified example;
}

server {
listen 443 ssl http2;
set $cache_key "$scheme$request_method$host$uri?$clean_args    $http_accept    $http_accept_encoding";
location /static/ {
proxy_cache CDN;
proxy_cache_key $cache_key;
proxy_ignore_headers Set-Cookie;
add_header Cache-Control "public, s-maxage=86400, max-age=3600, stale-while-revalidate=600" always;
proxy_pass https://origin_static;
}

location /api/public/ {
proxy_cache CDN;
proxy_cache_key $cache_key;
proxy_cache_valid 200 30s;
add_header Cache-Control "public, s-maxage=30, max-age=5, stale-while-revalidate=120, stale-if-error=600" always;
proxy_set_header If-None-Match $upstream_http_etag;
proxy_pass https://origin_api;
}
}

مبعوث (SWR + مخبأ سلبي، مفهوم)

yaml http_filters:
- name: envoy. filters. http. cache typed_config:
"@type": type. googleapis. com/envoy. extensions. filters. http. cache. v3. CacheConfig typed_config:
"@type": type. googleapis. com/envoy. extensions. cache. simple_http_cache. v3. SimpleHttpCacheConfig
Cache-Control/Surrogate-Control Header Cache Policies
We cache 5xx errors briefly via route/retry policy + local_rate_limit

رؤوس للأصول «السريعة»


Cache-Control: public, max-age=31536000, immutable
ETag: "hash"
Content-Encoding: br

رؤوس لأشباه المتحدثين (كتالوجات)


Cache-Control: public, s-maxage=600, max-age=120, stale-while-revalidate=1800, stale-if-error=86400
Vary: Accept-Encoding, Accept

FinOps: كيف يوفر النقد المال

↓ المنشأ للخروج، ناقصًا حمولة وحدة المعالجة المركزية/DB → تكاليف البنية التحتية المنخفضة.
عدد أقل من الطلبات على الخلفيات المدفوعة (البحث/الفهرس/الصور).
المقياس المستهدف: $/نقصان في p95 و $/انخفاض في ext بمقدار 1 جيجابايت - تتبع تأثير ما بعد الإطلاق.

iGaming/fintech specific

كتالوجات/أصول المزود: مسارات متحققة + TTL السنوية.
هبوط المناسبات/البطولات: 1-5 دقائق - الحد الأقصى '+' SWR 'لمدة 10-30 دقيقة ؛ تطهير العلامة عند الترقية.
صفحات ليف (معاملات/جداول): مخبأ جزئي لكتل JSON، TTL قصير (5-30 ثانية)، للكتل الشخصية - عرض العميل.
PSP/نقاط نهاية الدفع: لا تخفي، «بدون متجر» صارم ؛ مخبأ الكتب المرجعية فقط (جداول BIN، حالات).
Antibot: static/GET caching، طرق رمادية لـ ASNs المشبوهة ؛ حافظ على «الاختلاف» من العناوين الصاخبة.

قائمة التنفيذ المرجعية

  • وصف مفتاح Cache: تطبيع URL، قائمة الاستفسارات المسموح بها، «اختلف» فقط للواحد المطلوب.
  • فصل المسارات العامة/الخاصة ؛ خاص - «بدون متجر» وتجاوز CDN.
  • سلالم TTL حسب نوع المحتوى المقدم ؛ تم تكوين «SWR/إذا كان خطأ».
  • مخبأ متدرج + درع أصل مهيأ ؛ تم تمكين مخبأ سالب 5xx (قصير).
  • هناك تطهير علامة/عنوان URL، تطهير ناعم ؛ مع مؤتمر نزع السلاح.
  • يشمل الضغط (br/gzip)، وتنسيقات صور الويب، واستجابات النطاق.
  • المقاييس: نسبة الإصابة حسب الطبقة، p95 TTFB، معدل 304، أصل الخروج ؛ تنبيهات إلى الإخفاقات.
  • كتب اللعب: إحماء مخبأ قبل القمم، تطهير الطوارئ، تدهور الأصل.

أخطاء شائعة

الأصول غير versio مع حزم TTL كبيرة → «لزجة» من المستخدمين.
«تنوع» مفرط (بواسطة «مستخدم-وكيل»، جميع الرؤوس) → انفجار الكاردينالية ونسبة إصابة منخفضة.
Caching 4xx/401/403/private content.
عدم وجود مخبأ سلبي → سيل من طلبات المنشأ المتدهور.
لا تطهير العلامات → تطهير نقاط ضخمة وإعادة ملء العاصفة.
يتضمن مفتاح التخزين المؤقت معلمات UTM/المرجع «الصاخبة».
TTL قصير جدًا للستاتيك → حمل إضافي على CDN والمنشأ.

كتب اللعب الصغيرة

1) قم بتسخين المخبأ قبل الحدث

1. جمع أعلى عناوين URL بواسطة جذوع الأشجار → 2) مقدمة متوازية (محدودة السعر) حسب المنطقة → 3) تحقق من نسبة الإصابة ↑ و p95 ↓.

2) أخصائيو التطهير الناعم في حالات الطوارئ

1. أرسل «PURGE »/slear-tag → 2) CDN يعطي قديمة ويسحب طازجًا مع الخلفية → 3) تحقق من عدم وجود ارتفاعات في المنشأ.

3) فشل الأصل

1. يساعد «الخطأ القديم» X ساعات → 2) تمكين اللافتة «العمل الفني» على الحافة → 3) عند التعافي - الإحماء المستهدف.

النتيجة

استراتيجية CDN القوية = مفتاح ذاكرة التخزين المؤقت الصحيح + TTL ذات المعنى مع SWR/if-error + disability disability + tiered/shield + قابلية الملاحظة. قم بإصلاح السياسة في الرؤوس و IaC، وقياس نسبة الضرب و p95، وخطط للتدفئة حتى الذروة - وسيتلقى المستخدمون دائمًا إجابة سريعة، وسيظل الأصل على قيد الحياة حتى في أكثر الساعات حرارة.

Contact

اتصل بنا

تواصل معنا لأي أسئلة أو دعم.نحن دائمًا جاهزون لمساعدتكم!

بدء التكامل

البريد الإلكتروني — إلزامي. تيليغرام أو واتساب — اختياري.

اسمك اختياري
البريد الإلكتروني اختياري
الموضوع اختياري
الرسالة اختياري
Telegram اختياري
@
إذا ذكرت تيليغرام — سنرد عليك هناك أيضًا بالإضافة إلى البريد الإلكتروني.
WhatsApp اختياري
الصيغة: رمز الدولة + الرقم (مثال: +971XXXXXXXXX).

بالنقر على الزر، فإنك توافق على معالجة بياناتك.