Cross-Origin Storage API-এর সাথে পরিচয়

প্রকাশিত: ১০ নভেম্বর, ২০২৬

আধুনিক ওয়েব অ্যাপ প্রায়ই বড় অ্যাসেটের উপর নির্ভর করে, যেমন জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক, গেম ইঞ্জিন ও 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-এর মাধ্যমে একবার শেয়ার করলে পারফর্ম্যান্স ও স্থায়িত্ব দুই ক্ষেত্রেই সাহায্য হয়।
দুটি সম্পর্কহীন Three.js গেম, Descent এবং Quake, COS-এর মাধ্যমে ইঞ্জিনের একটি কপি শেয়ার করে, যা DevTools-এ পরীক্ষা করা হয়েছে।
দুটি সম্পর্কহীন Three.js গেম, Descent (ব্যাকগ্রাউন্ড ট্যাবে) এবং Quake (ফোরগ্রাউন্ড ট্যাবে), COS-এর মাধ্যমে ইঞ্জিনের একটি কপি শেয়ার করে, DevTools-এ পরীক্ষা করা হয়েছে। এই স্ক্রিনশটটি একটি পরীক্ষামূলক Chromium বিল্ড থেকে নেওয়া হয়েছে এবং এটি চূড়ান্ত ডিজাইন নাও দেখাতে পারে।

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 ডিজাইন রিভিউ পড়তে পারেন।

API ও প্রস্তাবের ব্যাপারে মতামত জানাতে পারেন। আপনি ক্রস-অরিজিন স্টোরেজ রিপোজিটরি-তে সমস্যা ফাইল করতে, সমর্থন দেখাতে বা পুল রিকোয়েস্ট খুলতে পারবেন।

রিসোর্স

এছাড়াও, এই টুলিং ও ডেমো চেক করে দেখুন:

অতিরিক্ত ব্যাকগ্রাউন্ড পড়া

টক ও পডকাস্ট