CDNEdge CachingCache-ControlPerformanceBackend Engineering

Day 20 — CDN ও Edge Caching — সার্ভারকে বিশ্রাম দিন 🌍

July 1, 20265 min read30 Days Of Backend Engineering

আপনি অনেক কষ্ট করে একটি application develop করলেন। Deploy করলেন বাংলাদেশের একটি server-এ। খুব সুন্দরভাবে সবকিছু চলছিল। কিন্তু হঠাৎ করে আপনার এই application-টি viral হয়ে গেল।

এখন Australia থেকে কেউ আপনার application-টি try করতে চাইল। কিন্তু সবকিছু অনেক দেরিতে show হচ্ছে। Latency অনেক বেশি। মোটামুটি অনেক time লেগে যাচ্ছে, wait করতে হচ্ছে। HTTP কীভাবে কাজ করে, এটা বুঝতে পারলে, কেন এমন হচ্ছে তা সহজেই বুঝে যাবেন।

বাংলাদেশ থেকে Australia-র distance প্রায় ৭,৫০০ কিলোমিটার। এখন এই distance অতিক্রম করতে সবকিছু মিলিয়ে মোটামুটি 300-500ms লেগে যাবে। Content-এর size অনুযায়ী এটা কমবেশি হতে পারে। Generally, এটা বেশ অনেকটা সময়। বাংলাদেশ থেকে Australia-তে data যেতেই এই সময় লেগে যাচ্ছে। এরপর locally load হওয়ার জন্যও আরও অনেক time লাগবে। এতে user কমে যাওয়ার সম্ভাবনা থাকে।

এই latency কমানোর উপায় কী?

CDN (Content Delivery Network)।


CDN কীভাবে কাজ করে?

একটা বিষয় চিন্তা করে দেখুন, আপনি যখন বাংলাদেশ থেকে access করেন তখন কিন্তু খুব বেশি সময় লাগে না। মানে আপনি যখন server-এর কাছাকাছি থাকেন, তখন latency অনেক কম থাকে।

কোনোভাবে, এই কাজটা যদি Australia-তেও করা যেত, তাহলে latency অনেকটাই কম হতো! কিন্তু সমস্যা হচ্ছে, Australia-তে same server maintain করা একটু ঝামেলার ব্যাপার।

এই সমস্যাটার সমাধানই করে মূলত CDN।

CDN হলো একটি distributed network যেখানে বিশ্বের বিভিন্ন স্থানে server স্থাপন করা থাকে এবং এই serverগুলো একসাথে কাজ করে। CDN data store করার পর স্বয়ংক্রিয়ভাবে সেই Data সব সার্ভারে Replicate হয়ে যাবে এবং সেখান থেকেই পরবর্তীতে ডাটা সার্ভ হবে।

Australia থেকে request করা user Australia-র সব থেকে কাছের সার্ভার থেকে এই ডাটা পাবে।

Setup করার পর latency 30-50ms-এর মধ্যে চলে আসবে। অর্থাৎ, প্রায় 10x faster!

বলে রাখা ভালো CDN শুধুমাত্র cached data serve করে। আর আগের একটা আর্টিকেলে বলেছি যে data cache করা আছে সেই data change করলে cache invalidation করে নতুনভাবে data cache করতে হয়।


কী Cache করা যায়?

আপনি চাইলেই সব ডাটা ক্যাশ করতে পারবেন না। কারণ এক্ষেত্রে Inconsistency দেখা দিতে পারে। Caching নিয়ে ১৫ এবং ১৬ নম্বর আর্টিকেলে বিস্তারিত আলোচনা আছে। ইতিমধ্যেই জেনে থাকার কথা।

CDN-এ মূলত নিচের এই জিনিসগুলো ক্যাশ করা হয়ে থাকে:

  • Static assets — images, CSS, JS, fonts। এগুলো সহজেই cache করা যায়।
  • HTML pages — SSG (Static Site Generation) site-এ পুরো HTML cache করা যায়।
  • API responses — read-heavy, rarely changing data।

Cache Headers: Browser আর CDN-কে বলুন

Cache-Control: public, max-age=31536000, immutable

public — CDN cache করতে পারবে। max-age=31536000 — ১ বছর cache। immutable — এই সময়ে content পাল্টাবে না।

Cache-Control: no-cache

এটা মানে cache করা যাবে না। Login page, checkout page-এ এটা দিন।


CDN কোথায় ব্যবহার করবেন?

  • Static Assets — /assets/logo.png, /dist/bundle.js — এগুলো CDN-এ রাখুন।
  • Next.js / Vercel — Edge-এ render করে। দুর্দান্ত performance।
  • Image Optimization — Cloudinary, ImageKit — images resize, compress, format convert করে deliver করে।

Cache Invalidation on CDN

"Cache invalidation is a nightmare."

CDN-এ file update করলে পুরানো cache আটকে থাকবে।

সমাধান — Cache Busting। File-এর URL-এ hash দিন:

/assets/bundle.a3f9c2.js

Content পাল্টালে hash পাল্টাবে। Browser/CDN নতুন file নামাবে।


বটম লাইন

CDN শুধু performance না — cost কমায়, availability বাড়ায়, security দেয়। Static assets CDN ছাড়া রাখা মানে unnecessary origin server load। আজই Cloudflare বা AWS CloudFront দিয়ে setup করুন।

আপনার project-এ CDN আছে? না থাকলে কেন না? কমেন্টে জানান! 👇