কম্প্রেশন ডিকশনারিজ দিয়ে গুগল সার্চের উন্নতি করা

প্রকাশিত: 14 মে, 2025

কম্প্রেশন ডিকশনারি ট্রান্সপোর্ট হল একটি নতুন স্ট্যান্ডার্ড যা আমাদের অনুরোধ জুড়ে বারবার কন্টেন্ট কমপ্রেস করতে দেয় এবং 2024 সালের শেষের দিকে Chrome 130-এ রিলিজ করা হয়েছিল। Google Search এই নতুন প্রযুক্তি গ্রহণ করেছে এবং ব্যাপক উন্নতি দেখেছে।

সুযোগ

আমরা যে ওয়েব পৃষ্ঠাগুলি পরিদর্শন করি সেগুলিতে প্রচুর ডুপ্লিকেশন রয়েছে৷ একই ওয়েবসাইটের অনেকগুলি পৃষ্ঠা একই কোডের বড় অংশ নিয়ে গঠিত—এইচটিএমএল, সিএসএস বা জাভাস্ক্রিপ্ট যাই হোক না কেন শুধুমাত্র এই সমস্ত কোডের মধ্যে বিষয়বস্তু পরিবর্তন করা হয়। যদিও প্রতিটি ফলাফল শত শত বৈশিষ্ট্যের একটি অনন্য সংমিশ্রণ যা সম্পূর্ণ অনন্য বিষয়বস্তুতে পরিণত হয়, তবুও ব্রাউজারে পাঠানো কোডের মধ্যে অনেক সাধারণতা রয়েছে।

দৃশ্যত, বেশিরভাগ অনুসন্ধান ফলাফলের পৃষ্ঠাগুলি কিছুটা একই রকমের হয় তা যাই হোক না কেন অনুসন্ধান শব্দটি প্রবেশ করানো হয়: শীর্ষে আমাদের রয়েছে Google লোগো, অনুসন্ধান বার, কিছু নিয়ন্ত্রণ। মাঝখানে আমাদের সার্চ টাইপের জন্য কিছু ট্যাব আছে, এবং তারপর ব্যবহারকারীকে সাহায্য করার জন্য বিভিন্ন উইজেট সহ বাম দিকে অনুসন্ধান ফলাফলের একটি তালিকা এবং ডানদিকে "সম্পর্কে" প্যানেলের সাথে অতিরিক্ত প্রসঙ্গ রয়েছে:

শীর্ষে সার্চ বার সহ সাধারণ Google অনুসন্ধান ফলাফল পৃষ্ঠা, বাম প্রধান কলামে ফলাফল এবং ডানদিকে অতিরিক্ত তথ্য
Google অনুসন্ধান ফলাফল পৃষ্ঠা

অবশেষে নীচে, আমাদের কাছে পৃষ্ঠা সংখ্যা বিকল্প এবং স্ট্যান্ডার্ড ফুটার রয়েছে। এটি দৃশ্যত উপলব্ধ- এই পৃষ্ঠাটি তৈরি করার জন্য পর্দার পিছনে প্রচুর কোড (HTML, CSS, এবং JavaScript) রয়েছে। এই কোডের বেশিরভাগই কার্যক্ষমতা অপ্টিমাইজেশান হিসাবে সরাসরি পৃষ্ঠার HTML-এ ইনলাইন করা হয়। যদিও এটি একটি দ্রুত পৃষ্ঠা লোড করার অনুমতি দেয়, এটি বিভিন্ন ফলাফলের পৃষ্ঠাগুলির মধ্যে সেই কোডটি ভাগ না করার খরচের সাথে আসে-যেমন একটি বাহ্যিকভাবে ক্যাশ করা সংস্থান অনুমতি দেয়৷

ওয়েবে কম্প্রেশন

কম্প্রেশন হল ওয়েবের জন্য একটি ব্যাপকভাবে ব্যবহৃত প্রযুক্তি। Gzip, বা Brotli বা Zstandard-এর মতো নতুন অ্যালগরিদমগুলির সাহায্যে সংস্থানগুলিকে সংকুচিত করা, পাঠানোর আগে সার্ভারে যতটা সম্ভব শক্তভাবে সমস্ত তথ্য প্যাক করার জন্য লসলেস কম্প্রেশনের মাধ্যমে ফাইলের মধ্যে পুনরাবৃত্তি এড়ানো যায়৷ ব্রাউজার তারপরে মূল বিষয়বস্তু পুনরুদ্ধার করতে সংকুচিত বাইটগুলি আনপ্যাক করতে পারে। ইমেজগুলির জন্য, ক্ষতিকারক কম্প্রেশন অতিরিক্ত বাইটগুলি সরিয়ে অনুরূপ সুবিধা প্রদান করে যা ব্যবহারকারীদের কাছে বোধগম্যভাবে আলাদা নাও হতে পারে।

সম্প্রতি অবধি, ওয়েবে কম্প্রেশন সংস্থানগুলির মধ্যে কম্প্রেশনের মধ্যে সীমাবদ্ধ ছিল। এটি বিভিন্ন সংস্থান জুড়ে সংকুচিত করা সম্ভব ছিল না, এবং অবশ্যই বিভিন্ন পৃষ্ঠা জুড়ে নয়। এটি দীর্ঘদিন ধরে একটি সীমাবদ্ধতা হিসাবে স্বীকৃত হয়েছে যা ওয়েব ইঞ্জিনিয়াররা ঠিক করতে চেয়েছিলেন।

সংকোচন অভিধান উদ্ধারে পরিবহন!

Browser Support

  • ক্রোম: 130।
  • প্রান্ত: 130।
  • ফায়ারফক্স: সমর্থিত নয়।
  • সাফারি: সমর্থিত নয়।

Source

কম্প্রেশন ডিকশনারি ট্রান্সপোর্ট হল একটি নতুন স্ট্যান্ডার্ড যা শেয়ার্ড "ডিকশনারি" ব্যবহার করে রিসোর্স জুড়ে কম্প্রেশন করার অনুমতি দেয় যা সেই শেয়ার করা অভিধান থেকে রেফারেন্সের সাথে বাইটের সাধারণ সিরিজ প্রতিস্থাপন করতে দেয়।

ব্রটলি এবং জেস্ট্যান্ডার্ডের মতো আধুনিক কম্প্রেশন অ্যালগরিদমগুলি সাধারণ পদগুলির অভিধানগুলির ব্যবহারকে সমর্থন করে যা অভিধানের একটি ছোট রেফারেন্সের সাথে এই পদগুলিকে প্রতিস্থাপন করে বৃহত্তর সংকোচনের অনুমতি দেয়। এমনকি Brotli সাধারণ ওয়েব পদগুলির একটি অন্তর্নির্মিত অভিধান সহ জাহাজে পাঠায়। কম্প্রেশন ডিকশনারি ট্রান্সপোর্ট সার্ভার এবং ব্রাউজারের জন্য কাস্টম অভিধান ভাগ করার উপায় প্রদান করে এটি তৈরি করে।

কাস্টম অভিধানগুলি হয় এমন একটি সংস্থান হতে পারে যা ইতিমধ্যে সাইটে ব্যবহৃত হয়েছে৷ উদাহরণস্বরূপ, আপনি app.v2.js ডাউনলোড করার সময় একটি অভিধান হিসাবে app.v1.js ব্যবহার করতে পারেন মূলত শুধুমাত্র পার্থক্যটি ডাউনলোড করতে (প্রায়ই "ডেল্টা-কম্প্রেশন" নামে পরিচিত)। বিকল্পভাবে, একটি <link rel="compression-dictionary"> ট্যাগ (বা সমতুল্য Link HTTP শিরোনাম) দিয়ে একটি পৃথক অভিধান সংস্থান নির্দিষ্ট করা যেতে পারে।

এটি অনেকগুলি ভাগ করা সামগ্রী বা কোড সহ সম্পদের ডাউনলোড আকারকে নাটকীয়ভাবে হ্রাস করতে পারে, যেমন পূর্বে উল্লেখ করা অনুসন্ধান ফলাফল পৃষ্ঠাগুলি।

Google অনুসন্ধানের কম্প্রেশন অভিধানের ব্যবহার

Google অনুসন্ধান দল ক্রমাগত অনুসন্ধানের কার্যকারিতা উন্নত করতে চাইছে ৷ তারা কম্প্রেশন অভিধানের প্রাথমিক গ্রহণকারী ছিল কারণ তারা এই প্রযুক্তির সম্ভাবনা দেখেছিল।

অনুসন্ধান তাদের ফলাফলের পৃষ্ঠাগুলির জন্য শেয়ার্ড ব্রোটলি কম্প্রেশন ব্যবহার করে অনুসন্ধান ফলাফলের একটি প্রতিনিধি নমুনা থেকে নির্মিত একটি পৃথক অভিধান ফাইলের সাথে। একটি শক্তিশালী স্বয়ংক্রিয় পাইপলাইন নিশ্চিত করে যে অভিধানটি সতেজ থাকে, ঘন ঘন পরিবর্তনশীল SRP বিষয়বস্তুর সাথে তাল মিলিয়ে যা দিনে একাধিকবার প্রকাশিত হয়। এটি ঠিক কীভাবে কাজ করে তা দেখতে আপনি DevTools ব্যবহার করতে পারেন।

যখন একটি ক্লায়েন্ট প্রথম একটি অনুসন্ধান ফলাফল পৃষ্ঠা লোড করে, সার্ভার Link: HTTP শিরোনাম এক ধরনের rel=compression-dictionary :

Link rel=compression-dictionary হেডার হাইলাইট করে Chrome DevTools-এ প্রতিক্রিয়া HTTP হেডার
Chrome DevTools নেটওয়ার্ক ট্যাবে Link হেডার দেখাচ্ছে

যদি ক্লায়েন্ট Brotli অভিধান কম্প্রেশন সমর্থন করে, কিন্তু এখনও ভাগ করা অভিধান ক্যাশে না করে, ব্রাউজার নিষ্ক্রিয় সময়ে এই অভিধানটি ডাউনলোড করে। অভিধানের প্রতিক্রিয়াটিতে Use-As-Dictionary প্রতিক্রিয়া শিরোনাম রয়েছে যা ব্রাউজারকে বলে যে এটি এই অভিধানটি কোন সম্পদের জন্য ব্যবহার করতে পারে:

Chrome DevTools-এ ব্যবহার-এ-ডিকশনারি হেডার হাইলাইট করা সহ প্রতিক্রিয়া HTTP হেডার
Chrome DevTools নেটওয়ার্ক ট্যাবে Use-As-Dictionary হেডার দেখাচ্ছে

অভিধানটি স্ট্যান্ডার্ড cache-control শব্দার্থবিদ্যা ব্যবহার করবে এবং সেই শিরোনামে সংজ্ঞায়িত নিয়মের সাথে মেলে এমন কোনো সংস্থানের জন্য উপলব্ধ হবে—এই উদাহরণে পৃষ্ঠাগুলি /search দিয়ে শুরু হয়েছে।

ভবিষ্যতের অনুসন্ধান ফলাফল পৃষ্ঠা লোড করার জন্য, ব্রাউজার সার্ভারকে বলতে পারে যে এটি Available-Dictionary HTTP অনুরোধ শিরোনাম ব্যবহার করে একটি অভিধান আছে৷ পৃষ্ঠাটি পুনরায় লোড করা এটি কার্যে দেখায়:

উপলব্ধ-অভিধান শিরোনাম হাইলাইট সহ Chrome DevTools-এ প্রতিক্রিয়া HTTP শিরোনাম
Chrome DevTools নেটওয়ার্ক ট্যাবে Available-Dictionary শিরোনাম দেখাচ্ছে

সংরক্ষণ লগ চেকবক্স সক্রিয় এবং ফিল্টারিং সহ, আমরা দুটি প্রতিক্রিয়া তুলনা করতে পারি:

উপরেরটি 107 kB এবং নীচে 60 kB এর সাথে একই সংস্থানের দুটি ডাউনলোডের তুলনা
Chrome DevTools নেটওয়ার্ক ট্যাব

এই উদাহরণে, প্রথম অনুরোধটি সম্পূর্ণ 107 kB প্রতিক্রিয়া এবং এটি Brotli ( br ) কম্প্রেশন ব্যবহার করে, যখন দ্বিতীয় পুনরায় লোড করার অনুরোধটি 60 kB-এ প্রায় অর্ধেক আকারের এবং অভিধান-সংকুচিত ব্রোটলি ( dcb ) কম্প্রেশন ব্যবহার করে, ফলে দ্রুত ডাউনলোডের সময় হয়৷

Chrome-এ, আপনি ভাগ করা অভিধানগুলি দেখতে chrome://net-internals/#sharedDictionary পৃষ্ঠাটি দেখতে পারেন এবং আপনি যদি শুরু থেকে এই উদাহরণটি পুনরাবৃত্তি করতে চান তবে সেগুলি সাফ করতে পারেন৷

ভাগ করা অভিধান পৃষ্ঠা একটি ভাগ করা অভিধান দেখাচ্ছে
Net-Internals #sharedDictionary page

ফলাফল

পরিবর্তনটি 2025 সালের বসন্তে সার্চ ব্যবহারকারীদের জন্য চালু করা হয়েছিল, প্রাথমিকভাবে Chrome ব্যবহারকারীদের জন্য। এটি স্ট্যান্ডার্ড ব্রোটলি কম্প্রেশনের তুলনায় সমস্ত ক্রোম ব্যবহারকারীদের এইচটিএমএল পেলোডের গড় আকার 23% হ্রাস করেছে। এই সামগ্রিক গড় উভয়ই অ-অভিধান-সংকুচিত ফলাফল (উদাহরণস্বরূপ অভিধান ছাড়াই প্রথমবার ব্যবহারকারী) এবং অভিধান-সংকুচিত অনুসন্ধান ফলাফল উভয়ই অন্তর্ভুক্ত করে। অভিধান-সংকুচিত ফলাফলের জন্য সঞ্চয় আরও বড় - যেমনটি আমরা দেখেছি আগের উদাহরণে প্রায় 50% উন্নতি হয়েছে।

এর ফলে সামগ্রিকভাবে 1.7% এবং উচ্চ লেটেন্সি নেটওয়ার্কে 9% পর্যন্ত একটি বৃহত্তম কন্টেন্টফুল পেইন্ট (LCP) উন্নতি হয়েছে। এটি ছোট মনে হতে পারে, কিন্তু Google অনুসন্ধান একটি হাইপার-অপ্টিমাইজ করা সাইট, তাই এই মাত্রার লাভগুলি বিশাল৷ অন্যান্য সাইট এই প্রযুক্তির সাথে আরও বড় উন্নতি দেখতে পারে।

আপনার সাইটে এটি চেষ্টা করুন!

কম্প্রেশন ডিকশনারি ট্রান্সপোর্ট এখন সমস্ত ক্রোমিয়াম-ভিত্তিক ব্রাউজারে (Chrome, Edge, Opera এবং আরও অনেক কিছু) ব্যবহারের জন্য প্রস্তুত। এটি একটি প্রগতিশীল বর্ধন যা অ-সমর্থক ব্রাউজার দ্বারা উপেক্ষা করা হবে, কিন্তু আরও ব্রাউজার এটি সমর্থন করে, তারাও উপকৃত হতে পারে।

এই প্রযুক্তির প্রতিদ্বন্দ্বিতাগুলি Google অনুসন্ধানের জন্য সুনির্দিষ্ট নয়৷ অনেক সাইট কম্প্রেশন ডিকশনারি ট্রান্সপোর্ট থেকে উপকৃত হতে পারে, সার্চের মতো আলাদা অভিধান ব্যবহার করে, অথবা অভিধান হিসেবে বিদ্যমান রিসোর্স ব্যবহার করে (যেমন একটি নতুন সংস্করণ রোল আউট করার সময় একটি অ্যাপের আগের সংস্করণ)।

এই প্রযুক্তি কীভাবে কাজ করে এবং আপনি কীভাবে এটি আপনার সাইটে প্রয়োগ করতে পারেন সে সম্পর্কে আরও বিশদ বিবরণের জন্য MDN-এর নির্দেশিকাটি দেখুন।

এর জন্য আপনার সার্ভারে কিছু সেটআপ বা অভিধান-ভিত্তিক সংকুচিত সংস্থান তৈরি করতে এবং সেগুলিকে উপযুক্ত হিসাবে পরিবেশন করার জন্য প্রক্রিয়া তৈরি করতে হবে — তবে ফলাফলগুলি কার্যকারিতার ক্ষেত্রে গুরুতরভাবে চিত্তাকর্ষক হতে পারে!