Logo GH

חישובי CDN ו ־ TTL

תקציר

מטמון CDN הוא ”מגן + מאיץ” בין המשתמש למקור. זה עובד טוב כאשר:

1. מפתח המטמון יציב ולא מכיל ”רעש”.

2. מדיניות TTL תחת עומס: ”S-maxage ”/” max-age” + ”stale-with-explace/if-aview”.

3. נכות מנוהלת: על ידי תגיות/קדימות + טיהור ”רך”.

4. מטמון-מטמון/מגן-מוצא ומטמון שלילי כלולים.

5. ישנה יכולת תצפית: יחס פגיעה בשכבות, p95 TFB, נתח חזרה 304.

כותרות בסיס ומה הם מתכוונים

”מטמון-שליטה”:
  • 'max-age = ' - TTL לדפדפן.
  • מקס = '- TTL עבור CDN/proxy (חפיפה' max-age ').
  • ”מעופש בזמן-לבטל = ” - לתת את מיושן, עדכון במקביל.
  • 'מעופש-אם-טעות' <'s> '- אנחנו חוזרים אחד מיושן כאשר טעות המקור מתרחשת.
  • ”בלתי ניתן לשינוי” - המשאב אינו משתנה (מתאים לנכסים ממולאים).
  • 'ETag '/' Last-Modified' - תנאים עבור 304, לשמור בייטים/מקור מעבד.
  • ”שונה” - רשימה של כותרות שמשפיעות על מפתח המטמון (שימוש באיפוק!).
  • 'פונדקאית-בקרה' - ”מורחבת” מטמון-בקרה עבור CDN (אם נתמכת).
  • ”פג תוקף” - מיושן, אבל עדיין מטופל על ידי לקוחות.
דוגמה (סטטיקה, שנה):

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: מקרה, חתכים כפולים, לוכד נגרר, סדר של פרמטרים שאילתה.
התעלם מ "רעש": "אום _'," fbclid', "gclid', תגי שופט שרירותיים.
Limited vary: רק כותרות משמעותיות (”קבלה-קידוד”, לפעמים ”קבל”, ”קבל-שפה” עבור locale).
התקן-class: אם יש צורך, השתמש ב ־ 2-3 מחלקות (ניידת/שולחן עבודה/טאבלט), ולא אינסוף סניפים של סוכן משתמש.
הקשר Auth: לא מטמון פרטי כברירת מחדל; שימוש בכתובות חתומות/עוגיות-מעקף או נתיבים ציבוריים/פרטיים נפרדים.

סגנון קפדני (פסאודו):

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

אסטרטגיות TTL לפי סוג תוכן

הקלדTTL CDN (”s-maxage”)דפדפן (”max-age”)בנוסף לכך
נכסים מבוססים ('/אפליקציה. a1b2. js')השנה 1השנה 1”בלתי ניתן לשינוי”; נכות לא נחוצה
קטלוגים/עמודי נחיתה1-10 דקות30-120 ש "ח'מעופש-בזמן-לבטל = 10-30 - &ft
תמונות (מחדש)10-60 דקות5-15 דקותשינוי ”קבל” (webp/avif)
GET APIs (מטמון)10-120 אס0-30 אסאידמפוטנט בלבד; ”מעופש-אם-טעות” 5-60 דקות
500/שגיאות פסק זמן00מטמון שלילי 30-120 שניות (ברמת CDN), לא מטמון 401/403/POST

מדיניות נכות

על ידי URL/Prefix: ”לטאטא הכל תחת '/סטטי/2025-11-05/”.
על ידי תגית/מפתח: ”הסר את כל 'קטלוג' ו 'מוצר: 123'”.
טיהור רך: סמן כמיושן, אל תמחק את האובייקט - מילוי מהיר יותר.
מונע אירועים: CI/CD או Odmin אירוע מפעיל webhook ”תגיות חסרות תוקף”.

המלצה: לשלב את שתי הטקטיקות: הסבת נתיבים עבור נכסים + תג-טיהור עבור תוכן/עמודים.

tiered-cache, מקור-מגן preprewm

שכבות אזוריות CDN = פחות בקשות מקור.
מגן המקור: ”מגן” אחד פופ למקור - משפר את המקום והיחס להיט.
PREWARM (קדם הבאה): לחמם כתובות/מטמונים חמים לפני אירוע/שחרור.
מטמון שלילי: מטמון 5xx/Timeout לזמן קצר (30-120 ש "ח) כדי לא להכריע את המוצא עם סופת רטראס.

כאשר אתה יכול

רק גט/ראש ואידימפוטנט.
מפתח: מסלול + שאילתות חיוניות (לדוגמה, '? קטגוריה = & page = "...).
אימות: 'ETag '/' Last-Modified' ו- 'short' s-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”, מורחב ”קבל”).
הגבלת ”Vary” ולשלוט בגודל/מספר הכותרות.
הפרדת דומיין: פרטי/מנהל - בשם נפרד ללא מטמון.
אימות תגובות: אל תטמון 4xx (למעט 404 עבור סטטי), אל תטמון דפי משתמש ללא מדיניות מפורשת.

דחיסה ופורמטים

ברוטלי לטקסט (js/css/json), gzip - fallback; נכסים דחוסים מקובלים.
תמונות: webp/avif שבו תמיכה; השתמש ב- vary: קבל "+ נגזרות.
טווח בקשות לווידאו/אודיו: CDN caches chunks.
תוכן-משא ומתן: שמור את הקרדינליות של המפתח נמוכה (מכשיר-מחלקה במקום UAs גולמי).

תצפית ו SLO

מטריצות מפתח

Hit-ratio (על ידי בייטים/בקשות) heartheend/tier/shield.
P50/95/99 TFB לפי אזור וסוג (סטטי/API).
יציאת מלוא קצב/מקורות - כמה הולך למקור.
שיעור 304 וגודל תגובה ממוצע.
תקציב שגיאה: שיתוף של בעיות ”מעופש-אם-שגיאה ”/” SWR”; תדר הטיהור.

דוגמאות SLO

'P95 TFBstatics באופן זמני 120-150 ms, API GET Cared 200-250 ms.
אדג 'פגע ביחס סטטי 90%, חצי רמקולים 60%.
אחוז התגובות מהענף המעופש עם שגיאות הקיימות ב-0. 5% בימים 30.

גיליונות רמאות קונפיג

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

איך מזומנים חוסכים כסף

Egress Origin, פחות CPU/DB Loame # עלויות תשתית נמוכות יותר.
פחות בקשות לתשלום (חיפוש/אינדקס/תמונות).
יעד מטרי: $/ירידה ב-p95 ו-$/ירידה ביציאה ב-1 GB - לעקוב אחר אפקט שלאחר השיגור.

iGaming/fintech ספציפי

קטלוגים/נכסים של ספקים: מסלולים מבוססים + TTL שנתי.
נחיתת אירוע/טורניר: 1-5 min 's-maxage' + 'SWR' עבור 10-30 דקות; טיהור-תג על שדרוג.
עמודי LIV (מקדמים/טבלאות): מטמון חלקי של בלוקים JSON, TTL קצר (5-30 s), עבור בלוקים אישיים - הפקת לקוח.
נקודות קצה של התשלום: אל תטמון, 'אין חנות' קפדנית; ספרי עיון בלבד (שולחנות סל, סטטוסים).
אנטיוט: static/GET Capting, מסלולים אפורים עבור ASNs חשוד; שמור 'Vary' מתוך כותרות רועשות.

רשימת יישומים

[ מפתח מטמון ] תיאר: נורמליזציה כתובות, רשימה של שאילתות מותרות, 'Vary' רק עבור הרצוי.
[ ] נתיבים ציבוריים/פרטיים מופרדים; פרטי - 'אין חנות' ולעקוף CDN.
[ ] סולמות TTL לפי סוג התוכן שהוצג; הגדרת SWR/אם-טעות.
[ ] מטמון-מטמון + מגן מקור; מטמון שלילי 5xx (קצר) מופעל.
[ ] קיים טיהור תג/כתובת, טיהור רך; אינטגרציה עם CI/CD.
[ ] כולל דחיסה (br/gzip), תבניות תמונות רשת ותגובות לטווח.
[ ] Metrics: פגיעה ביחס שכבה, P95 TFB, קצב 304, יציאת מוצא; התראות לכישלונות.
[ ] ספרי משחקים: חימום מטמון לפני פסגות, טיהור חירום, הידרדרות המקור.

שגיאות נפוצות

non-versio נכסים עם TTL גדול = ”דביק” חבילות ממשתמשים.
”Vary” (על ידי ”User-Agent”, כל הכותרות) = פיצוץ של קרדינליות ויחס להיט נמוך.
מזמין 4xx/401/403/תוכן פרטי.
מחסור במטמון שלילי = מפולת של בקשות למקור מושפל.
אין טיהור-תג = ניקוד מסיבי טיהור וסערה מחדש למלא.
מפתח המטמון כולל פרמטרים ”רועשים” UTM/Ref.
TTL קצר מדי עבור סטטיקה = עומס נוסף על CDN ומקורו.

ספרי משחקים מיני

1) לחמם את המטמון לפני האירוע

1. איסוף כתובות Top-N על ידי logs # 2) prefetch מקבילית (קצב מוגבל) על ידי region-limited # 3) בדוק את היחס להיט ו-p95.

2) קטולוגים רכים לטיהור חירום

1. שלח ”טיהור ”/tag-clear = 2) CDN נותן מעופש ומושך את טרי עם הרקע = 3) בדוק אין קוצים במקור.

3) כשל במקור

1. 'מעופש-אם-טעות' עוזר X שעות # 2) אפשר לבאנר ”עבודה טכנית” על הקצה # 3) עם התאוששות - חימום המטרה.

תוצאות

אסטרטגיית CDN חזקה = מפתח מטמון נכון + TTL בעל משמעות עם SWR/if-שגיאה + מנוהלת נכות + מוגבלת/מגן + תצפית. לתקן את המדיניות בכותרות ו-IC, למדוד את יחס הפגיעות ו-p95, לתכנן להתחמם לשיאים - והמשתמשים תמיד יקבלו תשובה מהירה, והמקור יישאר בחיים אפילו בשעה החמה ביותר.

Contact

צרו קשר

פנו אלינו בכל שאלה או צורך בתמיכה.אנחנו תמיד כאן כדי לעזור.

התחלת אינטגרציה

Email הוא חובה. Telegram או WhatsApp — אופציונליים.

השם שלכם לא חובה
Email לא חובה
נושא לא חובה
הודעה לא חובה
Telegram לא חובה
@
אם תציינו Telegram — נענה גם שם, בנוסף ל-Email.
WhatsApp לא חובה
פורמט: קידומת מדינה ומספר (לדוגמה, +972XXXXXXXXX).

בלחיצה על הכפתור אתם מסכימים לעיבוד הנתונים שלכם.