সম্প্রসারণ পরিষেবা কর্মীরা এখন জীবিত থাকতে পারেন যতক্ষণ না তারা ইভেন্টগুলি পাচ্ছেন। এটি সম্প্রসারণ পরিষেবা কর্মীদের নির্ভরযোগ্যতা বাড়ায়, কিন্তু একটি সমস্যা রয়েছে যা আপনার এড়ানো উচিত।
Chrome 110 থেকে শুরু করে (ফেব্রুয়ারি 7, 2023 পর্যন্ত বিটাতে), এক্সটেনশন পরিষেবা কর্মীরা যতক্ষণ পর্যন্ত ইভেন্টগুলি পাচ্ছেন ততক্ষণ বেঁচে থাকবেন। এটি এক্সটেনশন পরিষেবা কর্মীদের পূর্ববর্তী বাস্তবায়নে একটি সময় সমস্যা সংশোধন করে। যখন নতুন ইভেন্টগুলি ইভেন্টের সারিতে ছিল এবং সময়সীমার জন্য অ্যাসিঙ্ক্রোনাস কাজকে ছেঁটে ফেলার জন্য টাইমআউট ঘটতে পারে। এই উন্নতি এক্সটেনশন পরিষেবা কর্মীদের জন্য হার্ড পাঁচ মিনিটের সর্বোচ্চ জীবনকাল সরিয়ে দেয়।
এই প্রবন্ধটি বর্ণনা করে যে এই আচরণগুলি কীভাবে পরিবর্তিত হয়েছে।
পটভূমি
এক্সটেনশন পরিষেবা কর্মীরা বেশিরভাগই ওয়েব পরিষেবা কর্মীদের মতো আচরণ করে, তবে পরিষেবা কর্মী ইভেন্টগুলি ছাড়াও, এক্সটেনশন পরিষেবা কর্মীরাও এক্সটেনশন ইভেন্টগুলি শুনতে পারেন৷ যদিও সাধারণ পরিষেবা কর্মী ইভেন্টগুলি পরিষেবা কর্মীর জীবনকাল বাড়িয়ে দেয়, 110 প্রকাশের আগে শুধুমাত্র কয়েকটি এক্সটেনশন প্ল্যাটফর্ম ইভেন্টগুলি একটি এক্সটেনশন পরিষেবা কর্মীকে জীবিত রাখে।
সাধারণত, নিম্নলিখিত শর্তগুলির মধ্যে একটি পূরণ হওয়ার পরে Chromium একজন পরিষেবা কর্মীকে বরখাস্ত করে:
- পরিষেবা কর্মী ত্রিশ সেকেন্ডেরও বেশি সময় ধরে কোনো ইভেন্ট পায়নি এবং কোনো অসামান্য দীর্ঘ চলমান কাজ চলছে না। সেই সময়ের মধ্যে যদি কোনও পরিষেবা কর্মী একটি ইভেন্ট পেয়ে থাকেন, তাহলে নিষ্ক্রিয় টাইমারটি সরানো হয়েছিল।
- একটি দীর্ঘ চলমান টাস্ক সম্পূর্ণ হতে পাঁচ মিনিটের বেশি সময় নিয়েছে এবং গত ত্রিশ সেকেন্ডে কোনো ইভেন্ট পাওয়া যায়নি।
নিষ্ক্রিয় টাইমার বা দীর্ঘ চলমান টাস্ক টাইমারের মেয়াদ শেষ হওয়ার আগে প্রাপ্ত নতুন পরিষেবা কর্মী ইভেন্টগুলি টাইমারগুলি পুনরায় সেট করবে এবং পরিষেবা কর্মীর জীবনকাল বাড়িয়ে দেবে৷
দুর্ভাগ্যবশত, এই আচরণ এক্সটেনশন ইভেন্টগুলিতে প্রযোজ্য নয়। এক্সটেনশন ইভেন্টগুলি একজন এক্সটেনশন পরিষেবা কর্মীকে জাগিয়ে তুলতে পারে এবং ইভেন্টটি সম্পূর্ণ না হওয়া পর্যন্ত এটিকে জীবিত রাখতে পারে, কিন্তু এটি ত্রিশ সেকেন্ডের নিষ্ক্রিয় টাইমারকে প্রসারিত করতে পারে না। এটি কার্যকরভাবে বোঝায় যে এক্সটেনশন পরিষেবা কর্মীদের শেষ এক্সটেনশন ইভেন্টটি সম্পূর্ণ হওয়ার পরে যে কোনও সময় শেষ করা যেতে পারে, এমনকি যদি ব্রাউজারটি এক্সটেনশনে একটি নতুন ইভেন্ট প্রেরণ করে থাকে।
কি পরিবর্তন হয়েছে
Chrome 110 অনুযায়ী, সমস্ত ইভেন্ট নিষ্ক্রিয় টাইমার রিসেট করে এবং মুলতুবি ইভেন্ট থাকলে নিষ্ক্রিয় টাইমআউট ঘটবে না। অন্য কথায়, কোনো অপ্রত্যাশিত বাধা নেই বলে ধরে নিয়ে, এক্সটেনশন সার্ভিস কর্মীরা এখন সাধারণত জীবিত থাকবে যতক্ষণ না তারা সক্রিয়ভাবে ইভেন্ট প্রক্রিয়া করছে। উপরন্তু, এক্সটেনশন নির্দিষ্ট Chrome API-এ কল, যেমন chrome.storage.local.get()
, নিষ্ক্রিয় সময়সীমা পুনরায় সেট করবে৷ বিশেষভাবে:
- পরিষেবা কর্মী 30 সেকেন্ড নিষ্ক্রিয়তার পরে শেষ হয়ে যায়। (একটি ইভেন্ট গ্রহণ করা বা একটি এক্সটেনশন API কল করা এই টাইমার পুনরায় সেট করে)।
- কোনো একক অনুরোধ, যেমন কোনো ইভেন্ট বা API কল, প্রক্রিয়া করতে 5 মিনিটের বেশি সময় লাগলে পরিষেবা কর্মী সমাপ্ত করে।
নেটিভ মেসেজিং এর মত কিছু এপিআই একটি শক্তিশালী কিপ-লাইভ প্রদান করে যা এই দুটি টাইমার বাতিল করে।
দীর্ঘদিন ধরে চলমান কাজ বন্ধ না করে যখন সম্ভব তখন সম্প্রসারণ পরিষেবা কর্মীদের সমাপ্ত করা হয় তা নিশ্চিত করার জন্য আমরা এখনও কাজ করছি। সম্পদ-সচেতন সম্প্রসারণ পরিষেবা কর্মীদের সর্বদা সম্ভব হলে ফলন করা উচিত। অতিরিক্তভাবে, এক্সটেনশনগুলিকে স্থায়ী অবস্থার মাধ্যমে অপ্রত্যাশিত সমাপ্তির জন্য প্রস্তুত করা উচিত। এটি ব্যবহারকারীর দ্বারা ব্রাউজারটিকে জোর করে বন্ধ করার মতো অপ্রত্যাশিত ঘটনাগুলির বিরুদ্ধে রক্ষা করে৷