GH GambleHub

تخزين 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
@Gamble_GC
بدء التكامل

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

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

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