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

প্রকাশিত: ১৪ মে, ২০২৫

কম্প্রেশন ডিকশনারি ট্রান্সপোর্ট একটি নতুন স্ট্যান্ডার্ড, যা আমাদেরকে একাধিক অনুরোধে পুনরাবৃত্ত বিষয়বস্তু সংকুচিত করতে সাহায্য করে এবং এটি ২০২৪ সালের শেষের দিকে ক্রোম ১৩০-এ প্রকাশিত হয়েছিল। গুগল সার্চ এই নতুন প্রযুক্তিটি গ্রহণ করেছে এবং এর ফলে ব্যাপক উন্নতি দেখা গেছে।

সুযোগ

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

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

Typical Google Search results page with Search bar at the top, results on the left main column, and addition information on the right
গুগল অনুসন্ধান ফলাফল পৃষ্ঠা

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

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

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

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

কম্প্রেশন ডিকশনারি ট্রান্সপোর্ট উদ্ধারে এসেছে!

Browser Support

  • ক্রোম: ১৩০।
  • প্রান্ত: ১৩০।
  • ফায়ারফক্স টেকনোলজি প্রিভিউ: সমর্থিত।
  • সাফারি সমর্থিত নয়।

Source

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

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

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

This can dramatically reduce the download size of resources with a lot of shared content or code, such as the Search results pages mentioned previously.

গুগল সার্চে কম্প্রেশন ডিকশনারির ব্যবহার

The Google Search team is continually looking to improve the performance of Search . They were an early adopter of compression dictionaries as they saw the potential of this technology.

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

When a client first loads a search results page, the server provides a link to the dictionary using the Link: HTTP header with a type of rel=compression-dictionary :

Response HTTP headers in Chrome DevTools with Link rel=compression-dictionary header highlighted
Chrome DevTools showing Link header in Network tab

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

Response HTTP headers in Chrome DevTools with Use-As-Dictionary header highlighted
Chrome DevTools showing Use-As-Dictionary header in Network tab

The dictionary will use standard cache-control semantics and will be available for any resources matching the rules defined in that header—in this example pages started with /search .

For future search result page loads, the browser can tell the server it has a dictionary using the Available-Dictionary HTTP request header. Reloading the page shows this in action:

Response HTTP headers in Chrome DevTools with Available-Dictionary header highlighted
Chrome DevTools showing Available-Dictionary header in Network tab

With the Preserve log checkbox enabled and filtering, we can compare the two responses:

Comparison of two downloads of the same resource with the top one being 107 kB and the bottom 60 kB
ক্রোম ডেভটুলস নেটওয়ার্ক ট্যাব

এই উদাহরণে, প্রথম অনুরোধটি হলো সম্পূর্ণ ১০৭ kB আকারের একটি রেসপন্স এবং এতে ব্রটলি ( br ) কম্প্রেশন ব্যবহার করা হয়েছে, অপরদিকে দ্বিতীয় রিলোড অনুরোধটি প্রায় অর্ধেক অর্থাৎ ৬০ kB আকারের এবং এতে ডিকশনারি-কম্প্রেসড ব্রটলি ( dcb ) কম্প্রেশন ব্যবহার করা হয়েছে, যার ফলে ডাউনলোডের সময় দ্রুততর হয়।

In Chrome, you can view the chrome://net-internals/#sharedDictionary page to view Shared Dictionaries and clear them if you want to repeat this example from the beginning.

Shared Dictionary page showing one Shared Dictionary
নেট-ইন্টারনালস #sharedDictionary পৃষ্ঠা

ফলাফল

২০২৫ সালের বসন্তকালে এই পরিবর্তনটি সার্চ ব্যবহারকারীদের জন্য চালু করা হয়েছিল, প্রাথমিকভাবে ক্রোম ব্যবহারকারীদের জন্য। এর ফলে স্ট্যান্ডার্ড ব্রটলি কম্প্রেশনের তুলনায় সমস্ত ক্রোম ব্যবহারকারীর জন্য HTML পেলোডের গড় আকার ২৩% কমে যায়। এই সামগ্রিক গড়ের মধ্যে ডিকশনারি-কম্প্রেসড নয় এমন ফলাফল (যেমন, ডিকশনারি ছাড়া প্রথমবারের ব্যবহারকারী) এবং ডিকশনারি-কম্প্রেসড সার্চ ফলাফল উভয়ই অন্তর্ভুক্ত। ডিকশনারি-কম্প্রেসড ফলাফলের ক্ষেত্রে এই সাশ্রয় আরও বেশি—যেমনটি আমরা আগের উদাহরণে প্রায় ৫০% উন্নতির ক্ষেত্রে দেখেছি।

এর ফলে লার্জেস্ট কনটেন্টফুল পেইন্ট (LCP)-এ সামগ্রিকভাবে ১.৭% এবং উচ্চ ল্যাটেন্সিযুক্ত নেটওয়ার্কে ৯% পর্যন্ত উন্নতি হয়েছে। এই উন্নতি সামান্য মনে হতে পারে, কিন্তু গুগল সার্চ একটি হাইপার-অপ্টিমাইজড সাইট হওয়ায়, এই মাত্রার উন্নতি অনেক বড়। এই প্রযুক্তির মাধ্যমে অন্যান্য সাইটগুলো আরও বড় উন্নতি দেখতে পারে।

আপনার সাইটে এটি ব্যবহার করে দেখুন!

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

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

Check out the guide on MDN for more details on how this technology works and how you can implement it on your site.

ডিকশনারি-ভিত্তিক কম্প্রেসড রিসোর্স তৈরি করতে এবং সেগুলোকে যথাযথভাবে পরিবেশন করার জন্য আপনার সার্ভার বা বিল্ড প্রসেসে কিছু সেটআপের প্রয়োজন হয়—কিন্তু পারফরম্যান্সের দিক থেকে এর ফলাফল সত্যিই অসাধারণ হতে পারে!