ওয়েব অ্যাপ্লিকেশনের গতি ও কার্যকারিতা বাড়াতে HTTP ETag ব্যবহারের সুবিধা

Rayhan KobirRayhan Kobir
2 min read

লেখালেখির অভ্যাস খুব একটা বেশি নেই আমার প্রথমবারের মতো লেখার চেষ্টা করছি আশা করছি ভুল ত্রুটিগুলো ক্ষমা সুন্দর দৃষ্টি দেখবেন।

ETags (Entity Tags) একটি ক্যাশিং পদ্ধতি, যা রিসোর্স যাচাই ও ওয়েব রিকোয়েস্টের কার্যকারিতা উন্নত করতে সাহায্য করে।ETag হলো একটি ইউনিক আইডেন্টিফায়ার, যা প্রতিটি রিসোর্সের নির্দিষ্ট version এর জন্য তৈরি হয়।এর ফলে ক্লায়েন্টের ক্যাশে করা কপি যদি এখনো আপডেট থাকে, তবে অপ্রয়োজনীয় ডেটা স্থানান্তর এড়ানো যায়। এছাড়াও, ETags একটি রিসোর্সে simultaneous updates বা একাধিক আপডেট একসঙ্গে হওয়ার কারণে ওভাররাইট হওয়া ("মিড-এয়ার কলিশন") প্রতিরোধ করতে সাহায্য করে।

এটি সাধারণত কনটেন্টের হ্যাশ, লাস্ট মডিফিকেশন টাইমস্ট্যাম্প থেকে তৈরি করা হয়ে থাকে।

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

  • সার্ভার থেকে যখন কোনো রিসোর্স ক্লায়েন্টে পাঠানো হয়, তখন রিসোর্সের জন্য একটি ETag তৈরি করে ETag হেডারে পাঠানো হয়। যেমনঃ ETag: "unique-resource-version-id"

  • ক্লায়েন্ট সেই ETag এবং রিসোর্স ক্যাশে সংরক্ষণ করে।

  • রিসোর্স পুনরায় যাচাই করতে চাইলে, ক্লায়েন্ট রিকোয়েস্টে If-None-Match হেডারে ETag পাঠায়ঃ If-None-Match: "unique-resource-version-id"

  • সার্ভার ETag মিলিয়ে দেখে:

    • ETag মিলে গেলে, সার্ভার ৩০৪ (Not Modified) রেসপন্স পাঠায়, এবং নতুন ডেটা পাঠানোর প্রয়োজন হয় না।

    • ETag না মিললে, সার্ভার নতুন রিসোর্স এবং ETag সহ রেসপন্স পাঠায়।

এতে ব্যান্ডউইথ কম ব্যবহৃত হয় এবং ওয়েব অ্যাপ্লিকেশন ফার্স্ট কাজ করে, কেননা শুধুমাত্র প্রয়োজনীয় ডেটা আপডেট হয়।

ETag-এর দুটি ধরন রয়েছে: Weak (W/) এবং Strong

  • Weak ETag: সহজে তৈরি করা যায়, তবে তুলনার ক্ষেত্রে কম কার্যকর। এটি বোঝায় যে দুটি রিসোর্স কনটেন্ট সমান হতে পারে কিন্তু বাইট-পর্যায়ে সমান নয়। এটি বাইট রেঞ্জ ক্যাশিং প্রতিরোধ করে।
    ETag: W/"0815"

  • Strong ETag: তুলনার জন্য আদর্শ এবং বাইট-পর্যায়ে সঠিক মিল নিশ্চিত করে। এটি বাইট রেঞ্জ রিকোয়েস্টের ক্যাশিংও সম্ভব করে।

ETag-এর কিছু অসুবিধা হলো:

  • সার্ভার লোড বৃদ্ধি: ETag জেনারেট করতে অতিরিক্ত সার্ভার রিসোর্স লাগে, যা বড় আকারের অ্যাপ্লিকেশন এর ক্ষেত্রে লোড বাড়াতে পারে।

  • ক্যাশিং সমস্যা: বিভিন্ন সার্ভারে তৈরি ETag এক রকম নাও হতে পারে, ফলে ক্যাশিং কার্যকর হয় না এবং একাধিক সার্ভারে থাকা রিসোর্সে সমস্যা তৈরি হয়। Note: সকল সার্ভারে একধরনের ETag জেনারেশন স্ট্র্যাটেজি ফলো করলে এই প্রব্লেম টি এড়ানো সম্ভব।

  • প্রাইভেসি ঝুঁকি: ETag ব্যবহার করে ইউজার ট্র্যাকিং সম্ভব, যা প্রাইভেসি লঙ্ঘন করতে পারে।

NodeJS ইমপ্লিমেন্টেশন:

0
Subscribe to my newsletter

Read articles from Rayhan Kobir directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Rayhan Kobir
Rayhan Kobir