প্রকাশিত: ১০ নভেম্বর, ২০২৬
আধুনিক ওয়েব অ্যাপ প্রায়ই বড় অ্যাসেটের উপর নির্ভর করে, যেমন জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক, গেম ইঞ্জিন ও AI মডেল। সাইটগুলি একই অ্যাসেট ব্যবহার করলেও, প্রতিটি সাইটকে প্রতিটির নিজস্ব কপি ডাউনলোড ও স্টোর করতে হবে।
প্রস্তাবিত ক্রস-অরিজিন স্টোরেজ API, সংক্ষেপে COS-এর মাধ্যমে, ক্লায়েন্ট যে কন্টেন্ট খুঁজছে তা হ্যাশের মাধ্যমে নির্দিষ্ট করে এবং যেকোনও URL থেকে সেটি নিয়ে এসে নির্দিষ্ট করা সাইট (বা সব সাইট) জুড়ে শেয়ার করে। এর অর্থ হল, অ্যাসেট পরিবেশন করা থেকে স্বাধীন, সাইট জুড়ে একটি সঠিক, পরিচিত রিসোর্স শেয়ার করা যেতে পারে। এই প্রস্তাবের সাথে নিরাপত্তা সংক্রান্ত সুবিধা ও সুরক্ষার চ্যালেঞ্জও আসে।
যেসব ক্ষেত্রে ব্যবহার করা যাবে
আমরা Cache Storage API-এর মাধ্যমে ক্যাশিং মডেল এবং যেকোনও অ্যাসেট ক্যাশ করার গুরুত্ব সম্পর্কে বিস্তারিত লিখেছি। Cross-Origin Storage API আরও এক ধাপ এগিয়ে যায় এবং একাধিক সম্পর্কিত (বা অন্য কোনও) ওয়েবসাইটকে একই রিসোর্স অ্যাক্সেস করতে হলে এটি সহায়ক হতে পারে:
- AI মডেল: Gemma বা Llama ভেরিয়েন্টের মতো মডেলের সাইজ মোটামুটি এক গিগাবাইট থেকে দশ গিগাবাইট পর্যন্ত হতে পারে। COS-এর মাধ্যমে একটি কপি স্টোর ও রিট্রিভ করলে, অনেক ডুপ্লিকেট ডাউনলোড এড়ানো যায়। এই প্রস্তাবের পিছনে এটি একটি প্রধান অনুপ্রেরণা।
- Wasm মডিউল: Flutter-এর মতো ফ্রেমওয়ার্ক Wasm ফাইল পাঠায় যা প্রতিদিন হাজার হাজার স্বতন্ত্র উৎস থেকে লক্ষ লক্ষ বার অনুরোধ করা হয়, সর্বদা বাইট-আইডেন্টিক্যাল।
- জনপ্রিয় জাভাস্ক্রিপ্ট লাইব্রেরি ও ফ্রেমওয়ার্ক: ভেন্ডর কোড আলাদাভাবে এবং সম্পূর্ণভাবে (যেমন, সম্পূর্ণ, আনট্রি-শেকেন React লাইব্রেরি) বান্ডেল করলে, একাধিক অ্যাপ COS-এর মাধ্যমে একটি ক্যাশে করা কপি শেয়ার করতে পারে।
- গেম ইঞ্জিন: Godot বা Unity-র মতো ইঞ্জিনে তৈরি ব্রাউজার গেম COS-এর মাধ্যমে ইঞ্জিন রানটাইম শেয়ার করতে পারে এবং নেটওয়ার্ক থেকে শুধু গেম-নির্দিষ্ট অ্যাসেট ফেচ করতে পারে। বিভিন্ন অরিজিন বা iframe জুড়ে অনেক ক্যাজুয়াল গেম হোস্ট করে এমন গেমিং পোর্টালগুলি সবচেয়ে বেশি উপকৃত হয়।
- বড় ওয়েব ফন্ট: আইকন ফন্ট, ইমোজি ফন্ট এবং বিস্তৃত ইউনিকোড কভারেজ সহ ফন্টগুলি প্রচুর সংখ্যক পৃষ্ঠা জুড়ে ডাউনলোড করা হয়। COS-এর মাধ্যমে একবার শেয়ার করলে পারফর্ম্যান্স ও স্থায়িত্ব দুই ক্ষেত্রেই সাহায্য হয়।
COS-এর সাথে কাজ করার প্রাথমিক ফ্লো
COS API একটি navigator.crossOriginStorage.getFileHandle() পদ্ধতি চালু করে যার মাধ্যমে ওয়েব অ্যাপ, ক্রিপ্টোগ্রাফিক হ্যাশ দ্বারা শনাক্ত করা অরিজিন বাউন্ডারি জুড়ে ফাইল স্টোর ও ফিরিয়ে আনে। ব্যাখ্যায় একটি উদাহরণ আছে যা API-এর সাথে কাজ করার প্রাথমিক ফ্লো দেখায়।
আজই ব্যবহার করে দেখুন
বর্তমানে COS নিয়ে পরীক্ষা করার দুটি উপায় আছে:
- API সারফেস ও সব ইন্টিগ্রেশন পলিফিল করতে Chrome Web Store, Firefox অ্যাড-অন অথবা Safari App Store থেকে ব্রাউজার এক্সটেনশন ইনস্টল করুন। আপনি যেকোনও ব্রাউজারে API ফ্লো পরীক্ষা করতে পারবেন। অথবা সোর্স কোড থেকে এক্সটেনশন আনপ্যাক করে লোড করুন।
- Chromium-এ এক্সপেরিমেন্ট: Chromium-এ একটি এক্সপেরিমেন্টাল ইমপ্লিমেন্টেশন আছে। Apple silicon বা Linux x86_64-এ macOS-এর জন্য goo.gle/cos-chromium থেকে এটি ডাউনলোড করুন, তারপর
about://flagsখুলুন, "ক্রস-অরিজিন স্টোরেজ" সার্চ করুন, এটি চালু করা আছে হিসেবে সেট করুন এবং প্রম্পট করা হলে রিস্টার্ট করুন। এই বিল্ডে DevTools ইন্টিগ্রেশন অন্তর্ভুক্ত আছে: অ্যাপ্লিকেশন ট্যাবে ক্রস-অরিজিন স্টোরেজ খুঁজুন।
ইকোসিস্টেম সংক্রান্ত আগ্রহ
COS হল প্রাথমিক পর্যায়ের প্রস্তাব এবং বেশ কিছু প্রোজেক্টে ইতিমধ্যেই পরীক্ষামূলক সহায়তা প্রদান করা হয়, সাধারণত অপ্ট-ইন ফ্ল্যাগের মাধ্যমে এবং প্রোগ্রেসিভ এনহ্যান্সমেন্ট হিসেবে লেয়ার করা হয়:
- Emscripten জেনারেট করা Wasm আউটপুট শেয়ার করে।
- Flutter তার Skia Wasm রানটাইম শেয়ার করে।
- Transformers.js মডেলের ওয়েট এবং যে Wasm রানটাইমের উপর এটি নির্ভর করে তা শেয়ার করে।
- WebLLM মডেল ও রানটাইম শেয়ার করে।
- wllama AI মডেল শেয়ার করে।
- Nuxt.js ক্রস-অরিজিন স্টোরেজ থেকে শেয়ার করা ডিপেন্ডেন্সি লোড করে এবং একটি Vite COS প্লাগ-ইন বজায় রাখে।
- Prompt API Polyfill তার WebLLM এবং Transformers.js ব্যাকএন্ড জুড়ে AI মডেল শেয়ার করে।
- Prebid.js-এ হেডার বিডিং লাইব্রেরির COS-রেডি CDN ডিস্ট্রিবিউশন আছে।
স্ট্যান্ডার্ডাইজেশন
ক্রস-অরিজিন স্টোরেজ হল প্রাথমিক পর্যায়ের WICG প্রস্তাব। আপনি প্রাথমিক W3C TAG ডিজাইন রিভিউ পড়তে পারেন।
- হোস্ট ইন্টিগ্রেশন তাদের নিজ নিজ স্ট্যান্ডার্ড বডির সাথে ফাইল করা হয়:
- WHATWG HTML স্ট্যান্ডার্ড সহ
crossoriginstorageঅ্যাট্রিবিউট এবংcrossOriginStorageইমপোর্ট অ্যাট্রিবিউট - CSS ওয়ার্কিং গ্রুপের সাথে
cross-origin-storage() - Fetch Standard-এর সাথে
crossOriginStorageঅনুরোধের বিকল্প
- WHATWG HTML স্ট্যান্ডার্ড সহ
- ক্রস-ব্রাউজার ওয়েব প্ল্যাটফর্ম টেস্ট (কাজ চলছে)
- Mozilla এবং WebKit থেকে স্ট্যান্ডার্ড পজিশনের জন্য অনুরোধ করা হয়েছে।
API ও প্রস্তাবের ব্যাপারে মতামত জানাতে পারেন। আপনি ক্রস-অরিজিন স্টোরেজ রিপোজিটরি-তে সমস্যা ফাইল করতে, সমর্থন দেখাতে বা পুল রিকোয়েস্ট খুলতে পারবেন।
রিসোর্স
- ক্রস-অরিজিন স্টোরেজ API-এর ব্যাখ্যা এবং স্পেসিফিকেশন ড্রাফ্ট পড়ুন।
- ক্রস-অরিজিন স্টোরেজ আমব্রেলা বাগ এবং এর নির্ভরতা স্টার করে Chrome-এ COS-এর প্রয়োগ ফলো করুন।
- পাবলিক হ্যাশ তালিকার ব্যাখ্যা দেখুন।
- COS নিরাপত্তা ও গোপনীয়তা সংক্রান্ত প্রশ্নাবলী পূরণ করুন।
- প্রোটোটাইপ করার ইচ্ছা এবং Chrome প্ল্যাটফর্ম স্ট্যাটাস এন্ট্রি পর্যালোচনা করুন।
এছাড়াও, এই টুলিং ও ডেমো চেক করে দেখুন:
অতিরিক্ত ব্যাকগ্রাউন্ড পড়া
- ক্যাশে পার্টিশন করার মাধ্যমে নিরাপত্তা ও গোপনীয়তা পাওয়া
- Transformers.js-এ প্রস্তাবিত ক্রস-অরিজিন স্টোরেজ API নিয়ে এক্সপেরিমেন্ট করা
- HTTP ক্যাশে পার্টিশনিং: একই ছবি, দুবার ডাউনলোড করা হয়েছে, লেখক জোয়ান লিওন
- ডেনিস মোরেলোর লেখা ক্রস-অরিজিন স্টোরেজ API: দুবার ডাউনলোড করা বন্ধ করুন নিবন্ধ
- আমি চেয়েছিলাম ব্রাউজার যেন শুধু jQuery শিপ করে। Cross-Origin Storage came for rescue, লেখক: আহমেদ আলফি
টক ও পডকাস্ট
- ShopTalk Show 732: Thomas Steiner on New Cross-Origin Storage APIs (পডকাস্ট)
- Working Draft 723: Cross-Origin Storage API (জার্মান ভাষায় পডকাস্ট)
- WeAreDevelopers: ক্রস-অরিজিন স্টোরেজ কী (পডকাস্ট)
- JSNation US 2026-এ ক্রস-অরিজিন স্টোরেজ: ওয়েবের জন্য শেয়ার করা ক্যাশে