প্রকাশিত: ৬ মার্চ, ২০২৪
ডেটা কম্প্রেশন একটি পরীক্ষিত পারফরম্যান্স অপ্টিমাইজেশন কৌশল যা পেজের ব্যবহারযোগ্য রিসোর্সগুলোর আকার কমিয়ে দেয়। কিছু সময় ধরে, ওয়েব সার্ভারগুলোতে HTML, CSS, এবং JavaScript ফাইলের মতো সাধারণ টেক্সট-ভিত্তিক পেজ রিসোর্সগুলোকে কম্প্রেস করতে এবং ক্লায়েন্টের কাছে পাঠাতে প্রধানত gzip ব্যবহার করার প্রচলন ছিল, যেখানে সেগুলোকে ডিকম্প্রেস করা যেত। এর ফলে পেজের উদ্দিষ্ট আচরণকে প্রভাবিত না করেই রিসোর্সগুলো দ্রুত লোড হতো।
যদিও gzip নিজেই অত্যন্ত কার্যকর, সাম্প্রতিক বছরগুলোতে ওয়েবে কম্প্রেশনের আরও উন্নতি সাধিত হয়েছে। ২০১৬ সালে, ক্রোমে Brotli অ্যালগরিদম যুক্ত হয়, যা উপযুক্ত রিসোর্সগুলোর জন্য সামগ্রিকভাবে আরও ভালো কম্প্রেশন রেশিও প্রদান করে। ২০১৭ সালের শেষ নাগাদ, সমস্ত আধুনিক ব্রাউজার Brotli সমর্থন করতে শুরু করে এবং এর জন্য সার্ভার সমর্থনও আরও ব্যাপকভাবে ছড়িয়ে পড়তে থাকে। অতি সম্প্রতি, ক্রোমে ZStandard কম্প্রেশনও যুক্ত হয়েছে ।
তবে কাজ এখানেই শেষ নয়! ক্রোম টিম ওয়েবে শেয়ার্ড ডিকশনারি ব্যবহারযোগ্য করার জন্য কাজ করে আসছে, যা এখন Brotli এবং ZStandard উভয়ের জন্যই একটি অরিজিন ট্রায়ালে পাওয়া যাচ্ছে। যেসব ওয়েবসাইটে ঘন ঘন কোড আপডেট করা হয়, সেগুলোর জন্য শেয়ার্ড ডিকশনারি Brotli এবং ZStandard কম্প্রেশনের পরিপূরক হিসেবে কাজ করে উল্লেখযোগ্যভাবে উচ্চতর কম্প্রেশন রেশিও প্রদান করতে পারে এবং কিছু ক্ষেত্রে ৯০% বা তারও বেশি কম্প্রেশন রেশিও দিতে সক্ষম। এই পোস্টে শেয়ার্ড ডিকশনারি কীভাবে কাজ করে এবং আপনার ওয়েবসাইটে Brotli ও ZStandard ব্যবহারের জন্য কীভাবে অরিজিন ট্রায়ালের জন্য নিবন্ধন করতে পারেন, সে সম্পর্কে আরও বিস্তারিত আলোচনা করা হয়েছে। আপনি এই ভিডিওটিও দেখতে পারেন:
যৌথ অভিধানের ব্যাখ্যা
কম্প্রেশন হলো কোনো ইনপুটের মধ্যে থাকা অপ্রয়োজনীয় সিকোয়েন্স খুঁজে বের করা এবং সেই তথ্য ব্যবহার করে অনেক ছোট একটি আউটপুট তৈরি করার প্রক্রিয়া, যা পরবর্তীতে পূর্বাবস্থায় ফিরিয়ে আনা যায়। ওয়েবে কম্প্রেশন ভালোভাবে কাজ করে কারণ এটি রিসোর্স লোড হওয়ার সময়কে উল্লেখযোগ্যভাবে কমিয়ে দেয়। ব্রোটলি এবং জেডস্ট্যান্ডার্ড উভয়ই একটি কম্প্রেশন ডিকশনারি ব্যবহার করে তাদের কার্যকারিতা আরও বাড়াতে পারে, যা হলো অতিরিক্ত কিছু প্যাটার্নের একটি সংগ্রহ এবং এই অ্যালগরিদমগুলো কম্প্রেশনের সময় সেগুলো ব্যবহার করতে পারে। প্রকৃতপক্ষে, ব্রোটলির উচ্চ কার্যকারিতা অনেকাংশেই একটি অভ্যন্তরীণ ডিকশনারি ব্যবহারের মাধ্যমে অর্জিত হয়।
তবে, Brotli এবং ZStandard-এর সাথে ব্যবহারকারী-সৃষ্ট কাস্টম ডিকশনারি ব্যবহার করা যেতে পারে, যেগুলোতে নির্দিষ্ট রিসোর্সের জন্য বিশেষ প্যাটার্ন থাকে। বাস্তবে, একটি কাস্টম ডিকশনারি হলো একটি এক্সটার্নাল ফাইল যা যেকোনো ইনপুটে প্রয়োগ করা যায়। ডিকশনারিগুলো কোনো অ্যাপ্লিকেশনের প্রোডাকশন কোডের জন্য অত্যন্ত সুনির্দিষ্ট হতে পারে, অথবা যেকোনো কন্টেন্টের জন্যই হতে পারে। একটি নির্দিষ্ট ডিকশনারি তার ইনপুটের জন্য কতটা প্রযোজ্য, তা সামগ্রিক কম্প্রেশন দক্ষতার উপর একটি বড় প্রভাব ফেলতে পারে। যে ডিকশনারিগুলো কোনো ইনপুটের কন্টেন্টের সাথে অত্যন্ত সাদৃশ্যপূর্ণ, সেগুলো সাধারণ বা অসদৃশ কন্টেন্টযুক্ত ডিকশনারির তুলনায় উচ্চতর কম্প্রেশন রেশিও সহ আউটপুট প্রদান করে।
একটি কাস্টম কম্প্রেশন ডিকশনারি কতটা কার্যকর হতে পারে তার একটি উদাহরণ নিচে দেওয়া হলো: ধরুন আপনার ওয়েবসাইটটি অ্যাঙ্গুলার ফ্রেমওয়ার্ক ব্যবহার করে, এবং আপনি বর্তমানে যে সংস্করণটি ব্যবহার করছেন তা হলো ১.৭.৯। অ্যাঙ্গুলার ফ্রেমওয়ার্কের এই সংস্করণটি আনকম্প্রেসড অবস্থায় প্রায় ১৭২ কিলোবাইট (KiB)। ব্রটলির ডিফল্ট সেটিংসে কম্প্রেস করলে এর আকার হয় প্রায় ৫৩ কিলোবাইট (KiB)। এর ফলে কম্প্রেশন রেশিও দাঁড়ায় প্রায় ৭০%। তবে, ধরুন আপনি পরবর্তীতে অ্যাঙ্গুলার ১.৮.৩-এ আপগ্রেড করার সিদ্ধান্ত নিলেন। যেহেতু অ্যাঙ্গুলারের এই সংস্করণটির আকার প্রায় ১.৭.৯ সংস্করণের সমান, তাই আপনি আগের সংস্করণের মতোই কম্প্রেশন রেশিও আশা করতে পারেন।
এখানেই ডেল্টা কম্প্রেশন নামে পরিচিত একটি প্রক্রিয়া ব্যবহার করে একটি কাস্টম ডিকশনারি কাজে আসতে পারে, যেখানে কোনো রিসোর্সের পূর্ববর্তী সংস্করণের ডিকশনারি ব্যবহার করে তার পরবর্তী সংস্করণকে কম্প্রেস করা হয়। পূর্ববর্তী উদাহরণটি ব্যবহার করে বলা যায়, যদি আপনি অ্যাঙ্গুলারের ১.৭.৯ সংস্করণকে ডিকশনারি হিসেবে ব্যবহার করে ১.৮.৩ সংস্করণকে কম্প্রেস করেন, তাহলে আউটপুটের আকার হবে ৪ কিলোবাইটের সামান্য বেশি। এটি প্রায় ৯৮% কম্প্রেশন অনুপাত নির্দেশ করে। স্পষ্টতই, কম্প্রেশন ডিকশনারি লোডিং পারফরম্যান্সের উপর একটি বড় প্রভাব ফেলতে পারে, এবং বাস্তব-জগতের অ্যাপ্লিকেশনগুলিতে এর কার্যকারিতা ইতোমধ্যেই প্রমাণিত হয়েছে !
তবে, ওয়েবে এই কার্যপ্রবাহটি কার্যকর করার ক্ষেত্রে একটি চ্যালেঞ্জ রয়েছে। মূল সমস্যাটি হলো, যদি আপনি কোনো রিসোর্সকে কম্প্রেস করার জন্য একটি ডিকশনারি ব্যবহার করেন, তবে সেটিকে ডিকম্প্রেস করার জন্যও আপনার সেই একই ডিকশনারিটির প্রয়োজন হবে। ওয়েবে এই কার্যপ্রবাহটি আগেও চেষ্টা করা হয়েছে—বিশেষত SDCH-এর মাধ্যমে —কিন্তু এটিকে নিরাপদে বাস্তবায়ন করা বেশ কঠিন ছিল। শেয়ার্ড ডিকশনারি কম্প্রেশনের জন্য এই সর্বশেষ প্রস্তাবটি সেই উদ্বেগগুলোর সমাধান করে এবং একই সাথে স্ট্যাটিক ও ডাইনামিক উভয় ধরনের রিসোর্সের জন্যই একটি উল্লেখযোগ্য সুবিধা প্রদান করে।
ক্রোম যেভাবে শেয়ার্ড ডিকশনারির সমর্থনের বিজ্ঞাপন দেয়
সমস্ত ব্রাউজার Accept-Encoding রিকোয়েস্ট হেডারের মাধ্যমে তাদের সমর্থিত কম্প্রেশন অ্যালগরিদমগুলো জানিয়ে দেয়। এই হেডারের বিষয়বস্তু হলো সমর্থিত এনকোডিংগুলোর একটি কমা-দ্বারা-বিভক্ত তালিকা:
Accept-Encoding: gzip, br, zstd
এই নির্দিষ্ট Accept-Encoding হেডারটি নির্দেশ করে যে, রিসোর্সটির জন্য অনুরোধকারী ব্রাউজারটি gzip, Brotli, এবং ZStandard কম্প্রেশন অ্যালগরিদমগুলোকে সমর্থন করে। এরপর অনুরোধটির প্রতিক্রিয়াকারী ওয়েব সার্ভারটি সিদ্ধান্ত নিতে পারে যে অনুরোধটির উত্তর দেওয়ার সময় কোন অ্যালগরিদমটি ব্যবহার করা হবে।
যখন শেয়ার্ড ডিকশনারি সাপোর্ট সক্রিয় করা থাকে এবং কোনো রিসোর্সের জন্য একটি প্রাসঙ্গিক ডিকশনারি উপলব্ধ থাকে, Accept-Encoding হেডারে অতিরিক্ত টোকেন যোগ করা হয়। এই টোকেনগুলো হলো Brotli-এর জন্য br-d এবং Zstandard-এর জন্য zstd-d । Chrome একটি উপলব্ধ ডিকশনারির হ্যাশও অন্তর্ভুক্ত করবে, যা পরবর্তীতে আলোচনা করা হয়েছে।
Accept-Encoding: gzip, br, zstd, br-d, zstd-d
Available-Dictionary: :pZGm1Av0IEBKARczz7exkNYsZb8LzaMrV7J32a2fFG4=:
যদি কোনো ওয়েব সার্ভার এই টোকেনটি শনাক্ত করার জন্য কনফিগার করা থাকে এবং এটি ডিকশনারিটি চিনতে পারে, তবে এটি প্রযোজ্য এনকোডিংয়ের জন্য ডিকশনারিটি ব্যবহার করে সংকুচিত একটি রিসোর্স দিয়ে সেই অনুরোধের প্রতিক্রিয়া জানাতে পারে। বাস্তবে এটি কীভাবে সম্পন্ন করা হয়, তা নির্ভর করে অনুরোধটি একটি স্ট্যাটিক নাকি ডাইনামিক রিসোর্সের জন্য করা হয়েছে তার উপর।
স্ট্যাটিক রিসোর্সের জন্য শেয়ার্ড ডিকশনারি কম্প্রেশন
একটি স্ট্যাটিক পেজ রিসোর্স হলো এমন একটি রিসোর্স যা অনুরোধ করা URL-এর জন্য সর্বদা একই প্রতিক্রিয়া প্রদান করে। কম্প্রেসযোগ্য স্ট্যাটিক পেজ রিসোর্সের সাধারণ উদাহরণ হলো জাভাস্ক্রিপ্ট এবং CSS ফাইল। এই রিসোর্সগুলো সাধারণত ক্যাশিং-এর উদ্দেশ্যে কোনো না কোনো উপায়ে ভার্সন করা হয়—কখনও ফাইলের নামে ফাইলের বিষয়বস্তুর হ্যাশ ব্যবহার করে (উদাহরণস্বরূপ styles.abcd1234.css ), অথবা রিসোর্সটির ফিঙ্গারপ্রিন্টিং করার অন্য কোনো পদ্ধতি ব্যবহার করে। এই ধরনের রিসোর্সগুলো শেয়ার্ড ডিকশনারি দ্বারা প্রদত্ত ডেল্টা কম্প্রেশনের জন্য একটি চমৎকার বিকল্প, কারণ স্ট্যাটিক রিসোর্সগুলো প্রায়শই দীর্ঘ সময়ের জন্য ক্যাশ করা থাকে এবং নির্দিষ্ট ফ্রিকোয়েন্সিতে আপডেট হওয়ার প্রবণতা দেখায়।
একটি স্ট্যাটিক রিসোর্সের জন্য ডিকশনারি নির্দিষ্ট করতে হলে, সেটির জন্য Use-As-Dictionary রেসপন্স হেডারটি সেট করতে হয়। হেডারটি কয়েকটি কী/ভ্যালু পেয়ারের মধ্যে যেকোনো একটি গ্রহণ করে, কিন্তু একমাত্র আবশ্যক হলো match , যা URLPattern সিনট্যাক্স গ্রহণ করে এবং সেই রিসোর্স পাথ নির্দিষ্ট করে যেখানে ডিকশনারিটি ব্যবহার করা হবে:
Use-As-Dictionary: match="/dist/styles.*.css"
Use-As-Dictionary হেডারটিকে এমন একটি প্রক্রিয়া হিসেবে ভাবুন যা কোনো রিসোর্সের ভবিষ্যৎ সংস্করণগুলিতে প্রয়োগ করা হয়, যদি সেই সংস্করণগুলি এর মধ্যে নির্দিষ্ট করা প্যাটার্নের সাথে মেলে। ধরা যাক, আপনার ওয়েবসাইট তার সমস্ত স্টাইল একটিমাত্র CSS ফাইলে সরবরাহ করে। সরলতার জন্য, ধরা যাক সেই রিসোর্সের প্রথম সংস্করণটি /dist/styles.v1.css এ অবস্থিত, এবং এটি একটি Use-As-Dictionary রেসপন্স হেডারের সাথে পাঠানো হয়েছে, যেখানে match ভ্যালু হিসেবে /dist/styles.*.css রয়েছে।
কিছু সময় পর, আপনি আপনার ওয়েবসাইটের CSS আপডেট করেন এবং /dist/styles.v2.css এ এর একটি নতুন সংস্করণ প্রকাশ করেন। যেহেতু পূর্ববর্তী সংস্করণের Use-As-Dictionary রেসপন্স হেডারে ব্যবহৃত match ভ্যালুটি এই অনুরোধের ক্ষেত্রে প্রযোজ্য, তাই ব্রাউজার একটি Available-Dictionary হেডার পাঠাবে, যাতে ডিকশনারির একটি হ্যাশ থাকবে যা একটি স্ট্রাকচার্ড ফিল্ড বাইট সিকোয়েন্স হিসাবে এনকোড করা থাকবে।
Accept-Encoding: gzip, br, zstd, br-d, zstd-d
Available-Dictionary: :pZGm1Av0IEBKARczz7exkNYsZb8LzaMrV7J32a2fFG4=:
এই পর্যায়ে, সার্ভারের দায়িত্ব হলো তার প্রান্তে কম্প্রেশন কনফিগার করা, যাতে উপযুক্ত ডিকশনারিটি ব্যবহৃত হয়। এরপর সেই ডিকশনারি দিয়ে কম্প্রেস করা রিসোর্সটি পাঠানো হবে এবং ব্যবহারকারীর ব্রাউজার ক্যাশে থাকা ডিকশনারিটি ব্যবহার করে সেটিকে ডিকম্প্রেস করা হবে।
আপনি যদি আপনার ওয়েবসাইটের জন্য প্রায়শই নতুন কোড প্রকাশ করেন, তবে ডেল্টা কম্প্রেশন অনেক সহায়ক হতে পারে। তবে, এই প্রক্রিয়াটি নমনীয়। যদি ব্রাউজার ব্যবহারকারীর ব্রাউজার ক্যাশে কোনো ডিকশনারি আছে বলে শনাক্ত করতে না পারে, তবে এটি Accept-Encoding হেডারে অতিরিক্ত br-d বা zstd-d টোকেনগুলো উল্লেখ করবে না । সেক্ষেত্রে, সাধারণ কম্প্রেশন প্রক্রিয়াটিই প্রযোজ্য হবে।
ডাইনামিক রিসোর্সের জন্য শেয়ার্ড ডিকশনারি কম্প্রেশন
ডাইনামিক রিসোর্সগুলোও শেয়ার্ড ডিকশনারি কম্প্রেশন থেকে উপকৃত হতে পারে। ডাইনামিক রিসোর্স হলো সেগুলো যা কোনো প্রেক্ষাপটের ওপর ভিত্তি করে পরিবর্তিত হয়—উদাহরণস্বরূপ, একটি নিউজ ওয়েবসাইট যেখানে কোনো খবর আসার সাথে সাথে মূল পৃষ্ঠাটি ঘন ঘন আপডেট করা হয়। এইচটিএমএল ডকুমেন্টগুলো প্রায়শই ডাইনামিক রিসোর্স হয়ে থাকে। এই ধরনের ক্ষেত্রে, ডিকশনারিটিতে সাইটের বেশিরভাগ সাধারণ এইচটিএমএল কাঠামো এবং টেমপ্লেট কোড থাকতে পারে, যার ফলে সংকুচিত পৃষ্ঠাগুলোতে প্রতিটি পৃষ্ঠার শুধুমাত্র অনন্য অংশগুলো পাঠানো হয়।
ডাইনামিকভাবে তৈরি হওয়া রিসোর্সের প্রকৃতির কারণে, পরবর্তী ব্যবহারের জন্য ক্লায়েন্টে একটি ডিকশনারি লোড করা আবশ্যক। আগে থেকে একটি ডিকশনারি লোড করার অর্থ হলো, ডাইনামিক রিসোর্সগুলিতে শেয়ার্ড ডিকশনারি কম্প্রেশন প্রয়োগ করা অনুমাননির্ভর। এই ধরনের ক্ষেত্রে আশা করা হয় যে, আপনার ওয়েবসাইটে যথেষ্ট ট্র্যাফিক আসবে, যার ফলে বিপুল সংখ্যক নেভিগেশনের মাধ্যমে ডিকশনারির খরচ পুষিয়ে যাবে। আপনি যদি এটি চেষ্টা করার সিদ্ধান্ত নেন, তবে প্রথম ধাপ হলো আপনার পেজের HTML-এ একটি <link> এলিমেন্টের মাধ্যমে ডিকশনারিটির অবস্থান নির্দিষ্ট করে দেওয়া:
<link rel="dictionary" href="/dictionary.dat">
Chrome যখন এই <link> এলিমেন্টটির সম্মুখীন হয়, তখন পেজটি নিষ্ক্রিয় থাকা অবস্থায় এটি ডিকশনারিটি ফেচ করতে পারে এবং ব্যান্ডউইথের প্রতিযোগিতা এড়ানোর জন্য এটিকে কম প্রায়োরিটিতে রাখতে পারে। ডিকশনারিটির রেসপন্সে অবশ্যই একটি Use-As-Dictionary হেডার উল্লেখ করতে হবে এবং এটি কোন ডাইনামিক রিসোর্স পাথের জন্য প্রযোজ্য তা নির্দিষ্ট করে দিতে হবে:
Use-As-Dictionary: match="/product/*"
এখান থেকে, কার্যপ্রবাহটি মূলত স্ট্যাটিক রিসোর্সের মতোই। ব্রাউজারটি দেখবে যে ডিকশনারিটি সংশ্লিষ্ট রিসোর্সগুলোর জন্য প্রযোজ্য, এবং ব্রাউজারটি ডিকশনারিটির বিষয়বস্তুর হ্যাশসহ একটি Available-Dictionary হেডার অনুরোধটির সাথে যুক্ত করবে, যা আবারও, পূর্বে ব্যাখ্যা করা স্ট্যাটিক রিসোর্সের কার্যপ্রবাহের অনুরূপ।
বিল্ড করার সময় স্ট্যাটিক রিসোর্স সংকুচিত করুন
আপনি যদি বান্ডলারের সাথে পরিচিত হন, তাহলে আপনি হয়তো এর বিভিন্ন প্লাগইনের সাথেও পরিচিত, যেগুলো বিল্ড করার সময় রিসোর্স কম্প্রেস করতে পারে এবং পরবর্তীতে সেই কম্প্রেস করা রিসোর্সগুলো পরিবেশন করতে পারে। উদাহরণস্বরূপ, অ্যাপাচি আপনাকে অনুরোধের সময়েই সেই প্রি-কম্প্রেসড রিসোর্সগুলো পরিবেশন করার জন্য ডিরেক্টিভ ব্যবহার করার সুযোগ দেয় ।
কম্প্রেশন সমর্থন করে এমন বেশিরভাগ Node.js-ভিত্তিক বান্ডলার Node-এর বিল্ট-ইন Zlib লাইব্রেরি ব্যবহার করে। Zlib, Brotli-কে সমর্থন করে এবং যে বান্ডলারগুলো এটি ব্যবহার করে, সেগুলোতে সাধারণত সরাসরি Zlib-এ অপশন পাস করার জন্য একটি ইন্টারফেস থাকে, যা ডিকশনারি-সহায়ক কম্প্রেশন সমর্থন করে । এখানে কয়েকটি বান্ডলার দেওয়া হলো যেগুলো ডিকশনারি ব্যবহার সমর্থন করে:
- webpack-এর
CompressionWebpackPlugin, এরcompressionOptionsইন্টারফেসের মাধ্যমে । -
rollup-plugin-brotliএকটিoptionsকনফিগারেশন প্রদান করে যা সরাসরি Node.js-এর Zlib-এ চলে যায়, যেখানে ডিকশনারি নির্দিষ্ট করা যায়। - esbuild-এর জন্য
esbuild-plugin-compressথার্ড-পার্টি প্লাগইনটি Node.js-এ Zlib অপশনগুলো ব্যবহারের সুযোগও দেয়।
মনে রাখবেন যে, কোনো রিসোর্সের যেকোনো নির্দিষ্ট সংস্করণের জন্য উপলব্ধ ডিকশনারিগুলো সেই রিসোর্সের পূর্ববর্তী যেকোনো সংস্করণ ব্যবহার করতে পারে। এর মানে হলো, আপনাকে ব্যবহারকারীর ট্র্যাফিক বিশ্লেষণ করতে হবে এবং সেই অনুযায়ী পরিকল্পনা করতে হবে। একটি ভারসাম্য বজায় রাখার চেষ্টা করুন এবং এমন রিসোর্স তৈরি করুন যা সর্বাধিক সংখ্যক নিয়মিত ব্যবহারকারীকে যথাসম্ভব উপকৃত করে। সিডিএন প্রোভাইডাররা বর্তমানে শেয়ার্ড ডিকশনারি কম্প্রেশন নিয়ে পরীক্ষা-নিরীক্ষা করছে। এর কোনো বাস্তবায়ন এখনও সর্বসাধারণের ব্যবহারের জন্য উপলব্ধ নয়, তবে আমরা আশা করি যে এই অবস্থার পরিবর্তন হবে!
চেষ্টা করে দেখুন!
ব্রাউজারের বিদ্যমান কম্প্রেশন ক্ষমতার সাথে শেয়ার্ড ডিকশনারি কম্প্রেশনকে একীভূত করলে, সেইসব ওয়েবসাইটের লোডিং পারফরম্যান্স উল্লেখযোগ্যভাবে উন্নত হওয়ার সম্ভাবনা থাকে, যেগুলো প্রায়শই আপডেট করা প্রোডাকশন কোড প্রকাশ করে এবং পুরনো ভিজিটরদের কাছ থেকে প্রচুর ট্র্যাফিক পায়। আপনি যদি শেয়ার্ড ডিকশনারি কম্প্রেশন ব্যবহার করে দেখতে আগ্রহী হন, তবে আপনার কাছে দুটি বিকল্প রয়েছে:
- আপনি যদি শুধু শেয়ার্ড ডিকশনারি কম্প্রেশন কীভাবে কাজ করে তা বোঝার জন্য নিজে থেকে এটি নিয়ে পরীক্ষা-নিরীক্ষা করতে চান, তাহলে আপনি
chrome://flagsপেজ থেকে Compression dictionary transport experimental feature-টি চালু করতে পারেন। - আপনি যদি আপনার প্রোডাকশন ওয়েবসাইটে এটি ব্যবহার করে দেখতে আগ্রহী হন এবং দেখতে চান যে শেয়ার্ড ডিকশনারি কম্প্রেশন কীভাবে প্রকৃত ব্যবহারকারীদের উপকৃত করতে পারে, তাহলে একটি টোকেন পেতে অরিজিন ট্রায়ালের জন্য নিবন্ধন করুন এবং অরিজিন ট্রায়াল কীভাবে কাজ করে সে সম্পর্কে পড়ে নিন।
উপসংহার
ওয়েবে কম্প্রেশন প্রযুক্তির এই বড় অগ্রগতি নিয়ে আমরা বেশ উচ্ছ্বসিত, এবং এটি মানুষের দৈনন্দিন ব্যবহৃত অ্যাপ্লিকেশনগুলোকে কতটা দ্রুততর করে তুলতে পারে, তা নিয়েও আমরা আশাবাদী। আমরা আপনাকে এটি ব্যবহার করে দেখার জন্য উৎসাহিত করছি, এবং সবচেয়ে গুরুত্বপূর্ণ হলো, আপনি যদি এটি ব্যবহার করেন তবে আমরা আপনার মতামত জানতে চাই ! যদি আপনি কোনো বাগ খুঁজে পান, তবে crbug.com-এ তা রিপোর্ট করুন । অতিরিক্ত রিসোর্স এবং টুলের জন্য use-as-dictionary.com দেখুন। সবশেষে, এটি কীভাবে কাজ করে সে সম্পর্কে যদি আপনি আরও গভীরভাবে জানতে আগ্রহী হন, তবে এক্সপ্লেনারটি আপনার জন্য একটি ভালো পরবর্তী পদক্ষেপ হবে!