CDN ও HTTP caching: সাইট দ্রুত ও চালানো সস্তা করুন

CDN আপনার কনটেন্টের কপি ব্যবহারকারীর কাছাকাছি রাখে। এটি নিয়ন্ত্রণকারী caching header ও এড়ানোর ভুলগুলো শিখুন।

একটি origin থেকে কনটেন্ট cache করা বিশ্বজুড়ে edge server

CDN (content delivery network) বিশ্বজুড়ে ছড়ানো server-এর সেট। এটি আপনার কনটেন্টের কপি রাখে এবং প্রতিটি visitor-এর কাছের জায়গা থেকে পরিবেশন করে। ফল: কম latency, নিজের server-এ কম চাপ এবং traffic spike-এর সময় ভালো সুরক্ষা।

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

১. Visitor /logo.png চায়। DNS বা routing তাকে কাছের edge server-এ পাঠায়। ২. Edge-এ তাজা কপি থাকলে (cache hit) সঙ্গে সঙ্গে উত্তর দেয়। ৩. না থাকলে (cache miss) আপনার origin server-কে জিজ্ঞেস করে, উত্তর জমা রাখে ও ফেরত দেয়। ৪. সেই এলাকার পরবর্তী visitor cache করা কপি পায়।

ভালো সেটআপে hit ratio বেশি: বেশিরভাগ request আপনার server-এ পৌঁছায়ই না।

কী cache করবেন

  • Static ফাইল: ছবি, CSS, JavaScript, font, ভিডিও। সহজ ও অত্যন্ত লাভজনক।
  • সবার জন্য একই public পেজ, যেমন নিবন্ধ, অল্প সময়ের জন্য।
  • Public ও ধীরে বদলানো API উত্তর।

ব্যক্তিগত উত্তর cache করবেন না: account পেজ, cart, cookie বা login-নির্ভর যেকোনো কিছু, যদি না ঠিক কীভাবে করছেন জানেন।

Caching নিয়ন্ত্রণকারী header

Cache-Control প্রধান:

Cache-Control: public, max-age=31536000, immutable   # fingerprint করা static ফাইল
Cache-Control: public, max-age=300, s-maxage=600     # public পেজ, browser ৫ মিনিট, CDN ১০ মিনিট
Cache-Control: private, no-store                     # ব্যক্তিগত data, কখনো cache নয়
  • max-age: browser কত সেকেন্ড পুনর্ব্যবহার করতে পারে। s-maxage: CDN-এর মতো shared cache-এর জন্য একই।
  • public ও private: shared cache জমা রাখতে পারবে কি না।
  • no-cache: জমা রাখো কিন্তু ব্যবহারের আগে revalidate করো। no-store: একেবারে জমা রেখো না।
  • stale-while-revalidate: পেছনে তাজা কপি আনার সময় পুরোনো কপি পরিবেশন।

Revalidation

কপির মেয়াদ শেষ হলে cache ETag বা Last-Modified দিয়ে origin-কে জিজ্ঞেস করতে পারে "এটি কি এখনো হালনাগাদ?" হলে origin body ছাড়া 304 Not Modified দেয়, ফলে bandwidth বাঁচে।

Fingerprint দিয়ে cache busting

Static ফাইল দীর্ঘ সময় cache করুন এবং ফাইলের নামে hash দিন (app.3f9c2a.js)। কনটেন্ট বদলালে নামও বদলায়, তাই user সঙ্গে সঙ্গে নতুন ফাইল পায় এবং purge লাগে না।

HTML পেজ সাধারণত অল্প সময় cache বা revalidate করা হয়, কারণ সেগুলো ওই fingerprint করা ফাইল উল্লেখ করে।

Cache key ও Vary

Cache key ঠিক করে কী একই request, সাধারণত URL। সাবধান থাকুন:

  • Query string: utm_source-এর মতো tracking parameter উপেক্ষা করুন যাতে অনেক কপি না হয়।
  • Vary: Vary: Accept-Encoding ভিন্ন encoding-এর আলাদা কপি রাখে। ভুল বা অতি বিস্তৃত Vary (যেমন Cookie-এ) hit ratio নষ্ট করে।
  • Cookie: cache-যোগ্য পেজে cookie সেট এড়ান, কারণ cookie থাকলে অনেক CDN cache করে না।

Purge

কিছু সঙ্গে সঙ্গে হালনাগাদ করতে হলে CDN-এর URL, tag বা prefix অনুযায়ী purge ব্যবহার করুন। এমন পরিকল্পনা করুন যাতে কদাচিৎ লাগে: fingerprint করা asset ও অল্প HTML cache সময়।

Origin সুরক্ষা

  • Origin যেন শুধু CDN থেকে traffic নেয়, যাতে আক্রমণকারী এড়াতে না পারে।
  • CDN-পক্ষের rate limit, bot protection ও WAF ব্যবহার করুন।
  • থাকলে origin shield বা tiered caching চালু করুন, origin-এর চাপ কমাতে।
  • বিশ্বস্ত header দিয়ে আসল client IP পাঠান এবং শুধু CDN থেকে বিশ্বাস করুন।

Data ফাঁস করা ভুল

  • ব্যক্তিগতকৃত পেজ cache করা, ফলে এক user অন্যের কনটেন্ট দেখে। এটি বাস্তব ও গুরুতর bug।
  • Error পেজ অতি দীর্ঘ cache করা।
  • Authorization header-নির্ভর উত্তর cache করা।
  • User-নির্দিষ্ট API উত্তরে private ভুলে যাওয়া।

সবসময় দুটি আলাদা অ্যাকাউন্টে পরীক্ষা করুন এবং Cache-Control ও CDN-এর cache status header (প্রায়ই CF-Cache-Status, X-Cache বা Age) দেখুন।

দ্রুত যাচাই

curl -sI https://example.com/logo.png | grep -i -E "cache|age|etag"

মূল কথা: সামনে CDN বসান, fingerprint করা নামে static ফাইল দীর্ঘ সময় cache করুন, public পেজে অল্প cache দিন, ব্যক্তিগত উত্তর কখনো cache করবেন না, origin-কে CDN-এ বেঁধে রাখুন এবং সবসময় আসল request দিয়ে যাচাই করুন।


Networking ও Cloud সিরিজ, পর্ব ১ (ইন্টারনেট কীভাবে চলে): 5 নম্বর (মোট 5)। আগের লেখা: Load balancer সহজ ভাষায়: Layer 4 বনাম Layer 7 ও health check.

আরও পড়ুন

Recursion ও backtracking সহজ উদাহরণে

Recursion সমস্যার ছোট কপি সমাধান করে সমাধান করে। অনেক interview সমস্যায় ব্যবহৃত চিন্তার ধাপ ও backtracking টেমপ্লেট শিখুন।

Interview ও DSA•৩ মিনিটে পড়া