প্রকাশিত: 31 জুলাই, 2025
ক্রোম 139 থেকে বর্ধিত জীবনকাল ভাগ করা কর্মীদের জন্য একটি নতুন অরিজিন ট্রেইলে অংশগ্রহণ করুন৷ ট্রায়াল একটি নতুন extendedLifetime: true
বিকল্প।
বর্ধিত জীবনকাল বৈশিষ্ট্য জন্য ব্যবহার ক্ষেত্রে
ব্যবহারকারী পৃষ্ঠা থেকে দূরে নেভিগেট করার কারণে অনেক সাইট কিছু কাজ করতে চায়। উদাহরণস্বরূপ, সঞ্চয়স্থানে লেখা, বা সার্ভারগুলিতে ডেটা ফেরত পাঠানো, স্টেট বা রেকর্ড বিশ্লেষণগুলি সংরক্ষণ করা।
ওয়েব প্ল্যাটফর্ম কিছু সহজ ব্যবহারের ক্ষেত্রে মোকাবেলা করার জন্য কয়েকটি API সরবরাহ করে, তবে প্রতিটির সীমাবদ্ধতা রয়েছে:
- সিঙ্ক্রোনাস জাভাস্ক্রিপ্ট এপিআই, যেমন
localStorage
লিখছে, বর্তমান পৃষ্ঠাটি আনলোড করার আগে সম্পূর্ণ হওয়ার জন্য চালানো হয়। -
fetch API
keepalive
, এবং সম্প্রতিfetchLater
মতো অনেকগুলি বিকল্প রয়েছে, যা নথিটি স্বল্প সময়ের জন্য আনলোডের বাইরে অনুরোধ পাঠাতে দেয়।
যাইহোক, চূড়ান্ত fetch
অনুরোধ ব্যতীত এইগুলি শুধুমাত্র সিঙ্ক্রোনাস কাজ কভার করে। তারা হ্যাশ বা এনক্রিপ্ট করার জন্য IndexedDB , কম্প্রেশন স্ট্রীম বা ওয়েব ক্রিপ্টো-এর মতো অ্যাসিঙ্ক্রোনাস API-এর ব্যবহার করার অনুমতি দেয় না। অনেক এপিআই, বিশেষ করে নতুন এপিআই, প্রধান থ্রেড ব্লক করা এড়াতে অ্যাসিঙ্ক্রোনাস হয় তাই আনলোড করার সময় এই APIগুলি ব্যবহার করতে না পারা সীমাবদ্ধ।
বিকল্পটি হল পরিষেবা কর্মীদের ব্যবহার করা, যারা পৃথক পৃষ্ঠার জীবনচক্রের বাইরে থাকে। যাইহোক, এটি একটি বরং হেভিওয়েট সমাধান, যেখানে ডেভেলপারদের জন্য আরও জটিল জীবনচক্র এবং ব্যবস্থাপনার প্রয়োজনীয়তা রয়েছে, ব্যবহারকারীদের জন্য অতিরিক্ত প্রক্রিয়া এবং মেমরির প্রয়োজনীয়তা উল্লেখ না করা। এটি পরিষেবা কর্মীদের প্রধান ব্যবহারের ক্ষেত্রেও মেলে না (নেটওয়ার্ক অনুরোধের জন্য প্রক্সি হিসাবে কাজ করতে)। পৃষ্ঠা আনলোডের কিছু কাজ সম্পূর্ণ করার ক্ষেত্রে শুধুমাত্র ব্যবহারের ক্ষেত্রে সম্পূর্ণ পরিষেবা কর্মীদের ব্যবহার করা ওভারকিল বলে মনে হয়।
প্রস্তাবিত সমাধান
SharedWorker API হল একটি হালকা API যা প্রধান থ্রেড থেকে কাজ অফলোড করতে ব্যবহৃত হয়। যাইহোক, তারা বর্তমানে মূলের জীবনকাল অতিক্রম করে না (যখন সেই উত্সের শেষ পৃষ্ঠাটি আনলোড করা হয়)। ক্রোম শেয়ার্ড ওয়ার্কার এপিআই-তে একটি নতুন বিকল্প যোগ করার প্রস্তাব করছে যাতে শেয়ার্ড কর্মীদের স্বল্প সময়ের জন্য নথির ধ্বংস থেকে বাঁচতে দেওয়া হয়।
এইচটিএমএল স্ট্যান্ডার্ড ইতিমধ্যেই নথি আনলোড করার পরে অল্প সময়ের জন্য শেয়ার্ড কর্মীদের জীবিত রাখতে বাস্তবায়নকে উৎসাহিত করে, যাতে একই-অরিজিন পৃষ্ঠাগুলির মধ্যে নেভিগেট করার ফলে ভাগ করা কর্মীকে পুনরায় তৈরি করা না হয়। বর্ধিত লাইফটাইম প্রস্তাবটি শুধুমাত্র এই পরামর্শ দিয়ে এটিকে প্রসারিত করে যে, ব্যবহারকারী একই-উৎস গন্তব্যে নেভিগেট না করলেও, ব্যবহারকারী এজেন্টের উচিত শেয়ার্ড ওয়ার্কারকে কিছু সময়ের জন্য জীবিত রাখা, যাতে অ্যাসিঙ্ক কাজ শেষ করা যায়।
প্রস্তাবটি হল শেয়ার্ড কর্মীদের শেষ ডকুমেন্ট আনলোড করার পরে, সার্ভার কর্মীদের যে পরিমাণ সময় নিষ্ক্রিয় থাকার অনুমতি দেওয়া হয় সেই পরিমাণের জন্য-যা ক্রোমের জন্য 30 সেকেন্ড। মনে রাখবেন যে শেয়ার্ড কর্মীদের জন্য এটি একটি নিষ্ক্রিয় সময়ের পরিবর্তে আনলোডের পরে সর্বাধিক জীবনকাল। অর্থাৎ, 30 সেকেন্ডের সীমা নিষ্ক্রিয় সময়ের চেয়ে আনলোড থেকে শুরু হয়। সেই সময়ের মধ্যে যে কাজ শুরু হয়েছে এবং এখনও শেষ হয়নি তা বাতিল করা হবে।
বর্ধিত জীবনকাল সক্ষম করুন
বর্ধিত জীবনকাল ভাগ করা কর্মীদের জন্য একটি অরিজিন ট্রায়ালের জন্য নিবন্ধন করে ব্যবহারকারীদের জন্য সাইটগুলিতে বৈশিষ্ট্যটি সক্ষম করা যেতে পারে৷ বিকল্পভাবে বিকাশকারীরা chrome://flags/#enable-experimental-web-platform-features
পতাকা ব্যবহার করে তাদের নিজস্ব ব্রাউজারের জন্য সক্ষম করতে পারেন৷
উদাহরণ কোড
ট্রায়াল বা বৈশিষ্ট্য পতাকা নির্বাচন করার পরে, নিম্নরূপ বর্ধিত জীবনকাল সক্ষম করুন:
const myWorker = new SharedWorker("worker.js", { extendedLifetime: true });
যেহেতু ভাগ করা কর্মীরা ব্লবগুলিকে সমর্থন করে, এটি একটি পৃথক স্ক্রিপ্ট ছাড়াই সক্ষম করা যেতে পারে। উদাহরণস্বরূপ একটি IndexedDb এ ডেটা লিখতে:
const sharedWorkerScript = `
const transaction = db.transaction("analytics", "readwrite");
const store = transaction.objectStore("analytics");
const request = store.get("visitCount");
request.onsuccess = (event) => {
const newCount = (event.target.result || 0) + 1;
store.put(newCount, "visitCount");
};
`;
document.addEventListener("pagehide", () => {
const blob = new Blob([sharedWorkerScript], { type: "text/javascript" });
const blobURL = URL.createObjectURL(blob);
new SharedWorker(blobURL, { extendedLifetime: true });
});
আমাদের এখানে একটি উদাহরণ অ্যাপ্লিকেশন রয়েছে: https://sharedworker-extendedlifetime.netlify.app/ । যখন পৃষ্ঠাটি পুনরায় লোড করা হয় (বা 30 সেকেন্ডের মধ্যে বন্ধ এবং পুনরায় খোলা হয়), তখনও পূর্ববর্তী গণনাটি পাওয়া যায়।
শেয়ার্ড ওয়ার্কাররা একটি সাইটের জন্য এখানে দেখা যায়: chrome://inspect/#workers
এবং এটি শীঘ্রই বর্ধিত হবে তা দেখানোর জন্য extendedLifetime
বিকল্পটি ব্যবহার করা হয়েছে কিনা। পৃষ্ঠা আনলোড করার পরে 30 সেকেন্ডের জন্য বর্ধিত জীবনকাল ভাগ করা কর্মীরাও এই পৃষ্ঠায় দেখাতে থাকবে।
আপনার মতামত শেয়ার করুন
আমরা বর্ধিত লাইফটাইম শেয়ার্ড ওয়ার্কার অরিজিন ট্রেইল সম্পর্কে আপনার প্রতিক্রিয়া শোনার জন্য উন্মুখ।
এপিআই আকৃতিটি গিটহাবে আলোচনা করা হচ্ছে এবং আমাদের কাছে আরও বিশদ প্রযুক্তিগত ব্যাখ্যাকারী রয়েছে।
Chrome এর বাস্তবায়ন সম্পর্কে প্রতিক্রিয়ার জন্য, একটি Chromium বাগ ফাইল করুন৷