Content Delivery Network
CDN ka core hai EDGE SERVERS ka network aur ek routing mechanism jo user ko nazdeek ke edge par bhejta hai — ye aksar ANYCAST DNS se hota hai. Edge par content na mile (cache miss) to wo origin se laata hai, store karta hai, aur agle users ko wahin se deta hai.
Sabse mushkil hissa CACHE INVALIDATION hai. Teen tareeke: TTL (simplest, par stale window rehta hai), PURGE API (turant, par saare edges tak propagate karna padta hai), aur VERSIONED URLs (best — file badle to URL badlo, purana cache apne aap bekaar ho jaata hai). Static assets ke liye versioned URLs hi sahi jawab hai.
// Versioned URL — invalidation ki zaroorat hi khatam
/static/app.a3f9c2.js // content hash URL mein
Cache-Control: max-age=31536000, immutable
// HTML (badalta rehta hai) — short TTL
Cache-Control: max-age=60, must-revalidate- Anycast DNS se user nazdeek ke edge par jaata hai
- Cache miss par edge origin se laakar store karta hai
- Invalidation ka best jawab: versioned/immutable URLs
Bade CDNs mein ek se zyada cache layers hote hain. Edge (user ke paas) miss hone par REGIONAL cache dekha jaata hai, phir ORIGIN SHIELD, aur tabhi origin. Isse origin par load bahut kam ho jaata hai.
Origin shield ka fayda concrete hai: 100 edges bina shield ke origin par 100 requests bhejenge ek hi file ke liye. Shield ke saath origin ko sirf 1 request jaati hai. Ye "thundering herd on origin" ko rokta hai.
User → Edge (miss) → Regional (miss) → Origin Shield (miss) → Origin
// Bina shield: 100 edges = 100 origin requests
// Shield ke saath: 100 edges = 1 origin requestClassic CDN static files ke liye tha. Aaj dynamic content bhi edge par jaata hai — personalized pages, API responses, A/B testing. Iske liye EDGE COMPUTE (Cloudflare Workers, Lambda@Edge) use hota hai jo user ke paas hi code chalata hai.
Par sab kuch edge par nahi ja sakta — jahan strong consistency ya central database chahiye, wahan origin hi jaana padega. Edge stateless ya eventually-consistent kaam ke liye best hai.