CDN و Edge Computing
CDN: کش محتوا در لبه نزدیک کاربر؛ TTL، Invalidation و Edge Computing — چگونه سایتهای جهانی سریعاند
مسئله فاصله
سرور شما در فرانکفورت است؛ کاربر در تهران — نور هم باید ~۱۰۰ms سفر کند (رفتوبرگشت ~۲۰۰ms فقط برای شبکه!). برای هر عکس، CSS، ویدیو...
CDN (Content Delivery Network): شبکهای از سرورها در لبه (شهرهای دنیا) که محتوا را «نزدیک کاربر» نگه میدارد:
کاربر تهران → CDN تهران (miss) → سرور اصلی فرانکفورت
کاربر تهران → CDN تهران (hit!) → ~۵ms ✓
چه چیزی در CDN؟
| عالی ✓ | بد ✗ |
|---|---|
| عکس، ویدیو، فایل | داده شخصی (GDPR!) |
| CSS/JS | موجودی حساب لحظهای |
| فونت | API داینامیک حساس |
| صفحات عمومی (HTML کششونده) | Session/کوکی |
TTL و Invalidation
- TTL: «این فایل تا ۱ سال کش شود» — استاتیک با هش نام فایل (app.a3f2.js — تغییر = نام جدید!)
- Invalidation: «همین حالا بکش!» — برای محتوای آپدیتشونده؛ اما پخش به همه لبهها زمان میبرد
- قاعده معروف: «دو چیز سخت است: نامگذاری و cache invalidation!»
Edge Computing
فراتر از کش: اجرای کد در لبه!
- Cloudflare Workers، AWS Lambda@Edge — JS در ۳۰۰+ شهر دنیا
- کاربردها: A/B testing، احراز سریع، ریدایرکت، شخصیسازی سبک
- تأخیر منطقی: از «سفر به مرکز» به «همان شهر»!
معماری کامل با CDN
کاربر → CDN (استاتیک: hit فوری)
→ CDN (داینامیک: proxy به اصلی)
→ LB → سرورها → کش → دیتابیس
CDN اولین خط دفاع DDoS هم هست (ترافیک قبل از رسیدن به شما خنثی میشود)!
نکته: Cloudflare رایگان برای اکثر سایتها کافی است — یک DNS تغییر دهید و سایتتان جهانی سریع میشود! برای مصاحبه: «استاتیک با TTL بلند + نام هشدار؛ داینامیک از CDN عبوری» بگویید.
جمعبندی
- CDN = کش در لبه؛ فاصله را میکُشد
- استاتیک با TTL بلند + نام هشدار
- داینامیک: proxy یا Edge Computing
- بونوس: سپر DDoS و کاهش بار اصلی
این مبحث بخشی از دوره آموزش کامل طراحی سیستم (System Design) است.