ETag (Entity Tag) হলো একটি HTTP হেডার, যা ওয়েব রিসোর্সের নির্দিষ্ট ভার্সনকে ইউনিকভাবে চিহ্নিত করে। এটি মূলত ক্যাশিং এবং কনকারেন্সি কন্ট্রোলের জন্য ব্যবহৃত হয়। যখন কোনো রিসোর্স সার্ভার থেকে ক্লায়েন্টে পাঠানো হয়, তখন সেই রিসোর্সের জন্য একটি ETag জেনারেট করা হয় এবং HTTP রেসপন্সের ETag হেডারে সেট করা হয়।
ETag কীভাবে কাজ করে?
১. ক্লায়েন্ট যখন কোনো রিসোর্স রিকোয়েস্ট করে, সার্ভার সেই রিসোর্সের জন্য একটি ETag জেনারেট করে এবং রেসপন্সের সাথে পাঠায়।
২. ক্লায়েন্ট সেই রিসোর্স ও ETag ক্যাশে সংরক্ষণ করে।
৩. পরবর্তীতে ক্লায়েন্ট যখন একই রিসোর্স রিকোয়েস্ট করে, তখন If-None-Match
হেডারে পূর্বের ETag পাঠায়।
৪. সার্ভার ETag মিলিয়ে দেখে—
- যদি ETag মিলে যায়, তাহলে সার্ভার 304 (Not Modified) রেসপন্স পাঠায়, নতুন ডেটা পাঠায় না।
- যদি ETag না মিলে, তাহলে নতুন রিসোর্স ও নতুন ETag সহ রেসপন্স পাঠায়।
এর ফলে অপ্রয়োজনীয় ডেটা ট্রান্সফার কমে যায় এবং ওয়েব অ্যাপ্লিকেশনের গতি ও কার্যকারিতা বাড়ে।
ETag-এর ধরন
- Strong ETag: রিসোর্সের বাইট-পর্যায়ে মিল নিশ্চিত করে।
- Weak ETag: কনটেন্ট একই থাকলেও বাইট-পর্যায়ে পার্থক্য থাকতে পারে। সাধারণত দ্রুত তুলনার জন্য ব্যবহৃত হয়।
ETag ব্যবহারের সুবিধা
- ব্যান্ডউইথ সাশ্রয় হয়, কারণ অপরিবর্তিত রিসোর্স পুনরায় ডাউনলোড করতে হয় না।
- ওয়েব অ্যাপ্লিকেশন দ্রুত লোড হয়।
- কনকারেন্ট আপডেট (mid-air collision) প্রতিরোধে সহায়ক।
কিছু সীমাবদ্ধতা
- বড় অ্যাপ্লিকেশনে ETag জেনারেট করতে সার্ভার লোড বাড়তে পারে।
- একাধিক সার্ভারে ETag জেনারেশন স্ট্র্যাটেজি আলাদা হলে ক্যাশিং সমস্যা হতে পারে।
- ETag ব্যবহার করে ইউজার ট্র্যাকিং সম্ভব, যা প্রাইভেসি ঝুঁকি তৈরি করতে পারে।
নোট: সব সার্ভারে