Logo GH

حافظه های پنهان لبه و 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 اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

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