GH GambleHub

حافظه های پنهان لبه و POP

1) POP چیست و چرا «لبه» است

POP (نقطه حضور) یک گره شبکه تحویل محتوا (CDN/edge) است که از لحاظ جغرافیایی نزدیک به کاربر است. Edge cache - لایه ای از ذخیره پاسخ ها به طور مستقیم در POP، که موارد زیر را کاهش می دهد:
  • تاخیر (RTT کمتر قبل از مشتری).
  • بار و هزینه در هر مبدا (offload).
  • ترافیک بین مناطق/ابرها (صرفه جویی در خروج).

Edge فقط یک کش نیست. POP های مدرن از مسیریابی L7، فیلترهای WAF/bot، rate-limit، A/B/canaries، transformations و edge-compute (اسکریپت ها/توابع) پشتیبانی می کنند.

2) معماری ذخیره سازی لبه

2. 1 تخت در مقابل لایه

Flat: هر POP به مبدا می رود. ساده اما گران برای منبع.
Tiered/Shield: POP → Shield POP (حافظه مرکزی) → origin. Shield حافظه نهان را جمع می کند، یک چتر برای مبدا ایجاد می کند.

2. 2 بخش های منطقه ای

دامنه های ذخیره سازی جداگانه بر اساس منطقه/صلاحیت (GDPR/محلی سازی داده ها).
نوع: «POPs فقط اتحادیه اروپا» و «POPs جهانی»، کلید/قوانین جداگانه.

2. 3 Anycast + مسیریابی تاخیر/جغرافیایی

Anycast مشتری را به نزدیکترین POP از طریق BGP به ارمغان می آورد.
Geo/latency-aware سوئیچ بین POP/استخر منطقه ای در اندازه گیری RTT فعال/خطا.

3) کلیدهای کش، «متفاوت»، TTL و طراوت

3. 1 طراحی کلیدی

نرمال کردن پرس و جوها: مرتب کردن پارامترهای پرس و جو، حذف نویز (utm، ref).
محورهای معنایی را شامل می شود: «مستاجر»، «محلی»، «نسخه طرح» («v = 3»)، اما از PII اجتناب کنید.
برای محتوای خصوصی، حافظه پنهان عمومی و خصوصی را جدا کنید (نگاه کنید به § 7).

3. 2 کنترل کش (HTTP)

عناوین:
  • 'Cache-Control: public, max-age = 60, s-maxage = 300, stale-while-revalidate = 60, stale-if-error = 120'
  • 'ETag '/' Last-Modified' برای GET های شرطی (304).
  • Vary: کاردینالیتی را کمینه میکند ('Accept-Encoding', 'Accept-Language', sometimes 'Authorization '/' Cookie' for private paths).
  • میکرو کش برای «نزدیک بلندگو»: 1-5 ثانیه + SWR.

3. 3 استراتژی های قدیمی

SWR (stale-while-revalidate): پاسخ قدیمی و به روز رسانی با پس زمینه.
SIE (stale-if-error): در صورت خطای مبدأ، از حافظه پنهان قبل از «SIE» -TTL استفاده می کنیم.
نرم/سخت TTL: نرم مدت (می تواند کهنه)، سخت (خانم کامل).

4) ناتوانی: چگونه برای به روز رسانی «لبه»

4. 1 با کلید و برچسب ها

پاکسازی/ممنوعیت توسط URL/پیشوند - خشن اما سریع است.
کلید جایگزین/برچسب ها: برچسب ها را به اشیاء اختصاص دهید («مقاله: 42»، «رده: 7»)، ممنوعیت توسط برچسب - ناتوانی جرم بدون نیروی بی رحم URL.

4. 2 ناتوانی رویداد

هنگام تغییر داده در مبدأ، رویدادها را منتشر کنید (Kafka/NATS) → لبه غیرفعال BAN/PURGE/soft-expire را غیرفعال کنید.

4. 3 نسخه مصنوعی

برای استاتیک - هش محتوا در نام فایل.
برای API ها، نسخه کلیدی ('v = 4') را برای تغییرات ناسازگار تغییر دهید.

5) حفاظت از منبع و عملکرد

5. 1 حفاظت از منبع

روشن کردن سپر POP به عنوان یک نقطه از دست → ضرب طوفان با منشاء.

5. 2 ائتلاف/تک پرواز

در لبه، یک درخواست «مشت» کش در یک دست ؛ بقیه صبر کنید (بدون گرفتن stampede).

5. 3 نرخ محدود/صف/ریختن لبه на

در صورت بارگذاری بیش از حد، درخواست های کم اولویت/ناشناس را به POP، نه مبدا، رها کنید.

5. 4 URL امضا شده/کوکی امضا شده

منشا در پشت لبه پنهان است. دسترسی به محتوای خصوصی - توسط لینک های امضا شده/کوکی ها با TTL و ویژگی ها (IP/Geo/Path)، به طوری که برای توزیع به «همه».

6) حمل و نقل و تحول

6. 1 HTTP/2-3 и QUIC

HTTP/2: چندگانه، فشرده سازی هدر.
HTTP/3/QUIC: قفل HOL کمتر و بهتر در از دست داده → کانال های زیر P95/P99 TTFB.

6. 2 فشرده سازی و تصاویر

Brotli برای متن، AVIF/WebP برای تصاویر، تغییر اندازه تصویر در لبه (اندازه پاسخگو، DPR).
انواع کش بر اساس فرمت/اندازه: کلیدها شامل 'width/format' (یا 'Vary: Accept '/Client-Hints) هستند.

6. 3 TLS/0-RTT (شسته و رفته)

پخش مجدد جلسه سرعت نصب را افزایش می دهد، 0-RTT ممکن است برای پخش مجدد آسیب پذیر باشد → فقط برای GET های بی نظیر فعال می شود.

7) عمومی در مقابل کش لبه خصوصی

7. 1 عمومی

'Cache-Control: عمومی، s-maxage =... و واري کوچک

مناسب برای کاتالوگ، اخبار، تصاویر، CDN استاتیک.

7. 2 خصوصی/شخصی

گزینه ها:
  • در سطح مشترک کش نکنید: 'Cache-Control: private' (browser cache).
  • تقسیم بندی کلید: شامل tenant/user-id (یا token-hash) در کلید و علامت به عنوان خصوصی به اشتراک گذاشته شده (دقیق با ذخیره سازی و PII).
  • کوکی های امضا شده و Edge-auth: حافظه پنهان عمومی است، اما دسترسی با امضا (گزینه هایی با حالت جلسه رمزگذاری شده در لبه).

8) لبه محاسبه (کارگران/توابع)

توابع آسان در POP: بازنویسی مسیر/هدر، تقسیم A/B، نرمال سازی کلید، منطق SWR، پیش فرض منابع همسایه.
API محلی KV/Cache در POP برای عملیات میلی ثانیه.
محدودیت ها: زمان کوتاه/حافظه، فقدان اتصالات طولانی مدت، کار دقیق با PII/منطقه ای.

شبه مثال (کارگر مانند)

js export default {
async fetch(req, env) {
const key = normalize(req);
let res = await caches. default. match(key);
if (res) return withHitHeader(res, "HIT");

res = await fetch(req, { cf: { cacheEverything: true }});
const ttl = computeTTL(res);
eventWaitUntil(caches. default. put(key, res. clone(), { expirationTtl: ttl }));
return withHitHeader(res, "MISS");
}
}

9) نمونه های پیکربندی

9. 1 Nginx: میکرو کش + SWR

nginx proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=api:200m inactive=30m;
map $request_method $skip_cache { default 0; POST 1; PUT 1; DELETE 1; }

server {
location /api/list {
proxy_cache api;
proxy_cache_key "$scheme://$host$uri$is_args$args";
proxy_cache_valid 200 2s;          # micro-cache proxy_cache_use_stale error timeout updating;# SIE + SWR proxy_cache_background_update on;
add_header X-Edge-Cache $upstream_cache_status;
proxy_pass http://origin_pool;
}
}

9. 2 وارنیش: کلید های جایگزین и BAN

vcl sub vcl_recv {
if (req. method == "BAN") {
if (req. http. Surrogate-Key) {
ban("obj. http. Surrogate-Key ~ " + req. http. Surrogate-Key);
return (synth(200, "Banned"));
}
}
}

sub vcl_deliver {
set resp. http. Surrogate-Key = "article:42 tag:author:7";
set resp. http. Cache-Control = "public, s-maxage=300, stale-while-revalidate=60";
}

9. 3 نماینده (لبه کش فیلتر)

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. http. cache. simple_http_cache. v3. SimpleHttpCacheConfig

9. 4 رفتار سبک CloudFront (تصویر بند انگشتی)

رفتار A: '/images/' - TTL طولانی، فشرده سازی، در فرمت های مختلف متفاوت است.
رفتار B: '/api/' - TTL کوتاه، SWR، کوکی امضا شده، حفاظت WAF/ربات.
Origin Shield فعال است، وضعیت 500/502/504 → «stale-if-error».

10) قابلیت مشاهده، SLO و گزارش دهی

10. 1 معیارها

cache_hit_ratio (توسط POP/منطقه/مسیر)، byte_hit_ratio.
origin_offload = 1 − (origin_requests/ edge_requests).
TTFB/TTL توسط چندک، stale_responses_total، revalidations_total.
stampede_prevented_total، coalesced_waiters.
shield_hit_ratio (اگر لایه)، origin_egress_bytes (هزینه).

10. 2 سیاهههای مربوط/مسیرهای پیاده روی

سیاهههای مربوط به برچسب 'HIT/MISS/STALE/UPDATING/BYPASS'، کلید، TTL، POP، مستاجر.
در ردپاهای توزیع شده، منبع («edge»، «origin») و علت (revalidate/stale/error) را علامت گذاری کنید.

10. 3 نمونه های SLO

« '/api/list ': p99 TTFB 250 ، لبه ضربه 70٪، بایت ضربه 80٪، منشاء خطا بار 90٪».
نرخ پاسخ های «stale-if-error» 1٪ در روز ≤.

11) امنیت، حریم خصوصی، انطباق

WAF/مدیریت ربات - در لبه برای فیلتر کردن به مبدا.
منطقه ای بودن داده ها: مصنوعات خصوصی را فقط در POP های معتبر ذخیره کنید. از کلیدهای خاص منطقه و ACL ها استفاده کنید.
امضاها و نشانه ها در لبه، پاسخ های خصوصی از کش عمومی را نمی دهد.
به حداقل رساندن PII: اطلاعات شخصی را در کلید ها شامل نمی شود ؛ کوکی ها را رمزگذاری کنید TTL های کوتاه برای شخصی سازی.

12) دستور العمل های معمولی

12. 1 «تقریبا پویا» (نوار/لیست)

میکرو کش 1-3 با + SWR در لبه، سپر فعال، تک پرواز، منفی کش برای نتایج خالی 1-5 ثانیه.

12. 2 تصویر/ابرهای رسانه ای

تنظیم لبه/قالب بندی (WebP/AVIF)، گزینه های حافظه پنهان توسط «عرض/فرمت»، TTL طولانی، ناتوانی توسط برچسب های محتوا.

12. 3 API با شخصی سازی

'Cache-Control: کوکی خصوصی' یا امضا شده + تقسیم بندی کلید (مستاجر)، TTL های کوتاه، SWR ها برای بخش های «تقریبا عمومی» پاسخ.

12. 4 فروش بزرگ/تراکم

گرم کردن منابع کلیدی (prewarm)، افزایش TTL برای استاتیک، SWR/SIE تهاجمی، محدودیت های سخت برای منبع، سپر گنجانده شده است.

13) ضد الگوهای

بدون «متفاوت» با پاسخ های مختلف → نشت/داده های نادرست.
بزرگ «متفاوت» → کاردینالیتی → ضربه کم.
کش مشترک برای تولید/آزمایش → آلودگی.
هیچ تک پروازی → طوفان در مبدا گم شده است.
SWR بدون محدودیت → مسابقات به روز رسانی و بهمن درخواست اعتبار.

ذخیره سازی لبه پاسخ های خصوصی به عنوان حوادث امنیتی عمومی

عدم وجود لایه/سپر در بار در سراسر جهان → منشاء بیش از حد گرم.

14) چک لیست پیاده سازی

  • نقشه پوشش POP، فعال کردن anycast + تاخیر مسیریابی.
  • سیاست های ردیف/سپر و تک پرواز/coalescing را انتخاب کنید.
  • کلید های طراحی و متفاوت (حداقل کاردینالیتی، بدون PII).
  • پیکربندی TTL/SWR/SIE (نرم/سخت TTL) و منفی کش.
  • URL/کوکی امضا شده را فعال کنید، مبدا را پنهان کنید، فیلترهای WAF/bot را فعال کنید.
  • سازماندهی ناتوانی: جایگزین کلید/BAN + رویداد محور.
  • بالا بردن معیارهای hit/byte-hit/offload/TTFB و داشبورد per-POP.
  • گرم شدن قبل از قله، runbooks به طوفان/بیش از حد.
  • تست حریم خصوصی/منطقه ای، ممیزی های کلیدی و سیاست.
  • SLO/بودجه نادرست برای لبه و معیارهای TTL/SWR خودکار نیشگون گرفتن و کشیدن.

15) سوالات متداول

س: چگونه TTL را در لبه انتخاب کنیم ؟

A: فشار دادن منسوخ مجاز و هدف نسبت ضربه. برای «نزدیک دینامیک» - 1-5 s + SWR ؛ برای دایرکتوری ها/تصاویر - دقیقه/ساعت با ناتوانی توسط حوادث/برچسب ها.

س: چه زمانی Shield POP مورد نیاز است ؟

A: با ترافیک جهانی یا کلید های داغ: سپر به طور چشمگیری کاهش می یابد در مبدا و تثبیت امواج «گرفتن».

س: چگونه می توانم پاسخ های مجاز را ذخیره کنم ؟

A: یا «خصوصی» (مرورگر)، یا عمومی با کوکی/URL امضا شده و تقسیم بندی کلید (بدون PII)، و یا به طور کلی برای اطلاعات شخصی بحرانی دور زدن.

س: چه ربطی به HTTP/3 دارد ؟

A: فعال کردن: موبایل/کانال از دست رفته برنده به خصوص. کنترل سازگاری پروکسی و عقب بر روی HTTP/2.

16) مجموع

حافظه های پنهان لبه و شبکه POP پایه و اساس سیستم عامل های با سرعت بالا و اقتصادی هستند. موفقیت توسط کلید صحیح و 'Vary'، TTL/SWR/SIE معقول، ناتوانی برچسب/رویداد، حفاظت از منشاء لایه/سپر، و همچنین مشاهده (ضربه/offload/TTFB) و نظم و انضباط امنیت/حریم خصوصی تعیین می شود. چک لیست را دنبال کنید - و «لبه» شتاب دهنده شما خواهد بود، نه منبع شگفتی.

Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

Telegram
@Gamble_GC
شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.