কর্মীদের ওভারভিউ

কীভাবে ওয়েব কর্মী এবং পরিষেবা কর্মীরা আপনার সাইটের কার্যকারিতা উন্নত করতে পারে এবং কখন একজন ওয়েব কর্মী বনাম একজন পরিষেবা কর্মী ব্যবহার করবেন।

অ্যান্ড্রু গুয়ান
Andrew Guan

এই সংক্ষিপ্ত বিবরণ ব্যাখ্যা করে কিভাবে ওয়েব কর্মী এবং পরিষেবা কর্মীরা আপনার ওয়েবসাইটের কর্মক্ষমতা উন্নত করতে পারেন এবং কখন একজন ওয়েব কর্মী বনাম একজন পরিষেবা কর্মী ব্যবহার করবেন। উইন্ডো এবং পরিষেবা কর্মী যোগাযোগের নির্দিষ্ট নিদর্শনগুলির জন্য এই সিরিজের বাকি অংশগুলি দেখুন।

ব্রাউজারটি একটি ওয়েব পৃষ্ঠায় সমস্ত জাভাস্ক্রিপ্ট চালানোর জন্য একটি একক থ্রেড ( প্রধান থ্রেড ) ব্যবহার করে, সেইসাথে পৃষ্ঠাটি রেন্ডার করা এবং আবর্জনা সংগ্রহ করার মতো কাজগুলি সম্পাদন করে৷ অত্যধিক জাভাস্ক্রিপ্ট কোড চালানো মূল থ্রেডকে ব্লক করতে পারে, ব্রাউজারকে এই কাজগুলি করতে দেরি করে এবং ব্যবহারকারীর খারাপ অভিজ্ঞতার দিকে পরিচালিত করে।

iOS/Android অ্যাপ্লিকেশান ডেভেলপমেন্টে, অ্যাপের প্রধান থ্রেড ব্যবহারকারীর ইভেন্টগুলিতে প্রতিক্রিয়া জানানোর জন্য বিনামূল্যে থাকে তা নিশ্চিত করার জন্য একটি সাধারণ প্যাটার্ন হল অতিরিক্ত থ্রেডগুলিতে অপারেশন অফলোড করা। প্রকৃতপক্ষে, অ্যান্ড্রয়েডের সর্বশেষ সংস্করণগুলিতে, প্রধান থ্রেডটিকে খুব বেশি সময় ধরে ব্লক করা একটি অ্যাপ ক্র্যাশের দিকে নিয়ে যায়।

ওয়েবে, জাভাস্ক্রিপ্ট একটি একক থ্রেডের ধারণার চারপাশে ডিজাইন করা হয়েছিল এবং শেয়ার্ড মেমরির মতো একটি অ্যাপের মতো একটি মাল্টিথ্রেডিং মডেল বাস্তবায়নের জন্য প্রয়োজনীয় ক্ষমতার অভাব রয়েছে৷

এই সীমাবদ্ধতা থাকা সত্ত্বেও, একটি অনুরূপ প্যাটার্ন ওয়েবে কর্মীদের ব্যবহার করে ব্যাকগ্রাউন্ড থ্রেডগুলিতে স্ক্রিপ্ট চালানোর মাধ্যমে অর্জন করা যেতে পারে, যা তাদের মূল থ্রেডে হস্তক্ষেপ না করে কাজগুলি সম্পাদন করার অনুমতি দেয়। কর্মীরা হল একটি সম্পূর্ণ জাভাস্ক্রিপ্ট স্কোপ যা একটি পৃথক থ্রেডে চলছে, কোনো ভাগ করা মেমরি ছাড়াই।

এই পোস্টে আপনি দুটি ভিন্ন ধরণের কর্মী (ওয়েব কর্মী এবং পরিষেবা কর্মী), তাদের মিল এবং পার্থক্য এবং উৎপাদন ওয়েবসাইটগুলিতে তাদের ব্যবহারের জন্য সবচেয়ে সাধারণ নিদর্শন সম্পর্কে শিখবেন।

চিত্রটি উইন্ডো অবজেক্ট এবং একটি ওয়েব কর্মী এবং পরিষেবা কর্মীর মধ্যে দুটি লিঙ্ক দেখাচ্ছে৷

ওয়েব কর্মী এবং পরিষেবা কর্মী

মিল

ওয়েব কর্মী এবং পরিষেবা কর্মী হল ওয়েবসাইটগুলিতে উপলব্ধ দুই ধরনের কর্মী। তাদের কিছু জিনিস মিল রয়েছে:

  • উভয়ই একটি সেকেন্ডারি থ্রেডে চলে, যা জাভাস্ক্রিপ্ট কোডকে মূল থ্রেড এবং ইউজার ইন্টারফেস ব্লক না করেই এক্সিকিউট করার অনুমতি দেয়।
  • তাদের Window এবং Document অবজেক্টে অ্যাক্সেস নেই, তাই তারা সরাসরি DOM-এর সাথে ইন্টারঅ্যাক্ট করতে পারে না এবং ব্রাউজার API-এ তাদের সীমিত অ্যাক্সেস রয়েছে।

পার্থক্য

কেউ ভাবতে পারে যে বেশিরভাগ জিনিস যা একজন ওয়েব কর্মীকে অর্পণ করা যেতে পারে তা একজন পরিষেবা কর্মী এবং এর বিপরীতে করা যেতে পারে, তবে তাদের মধ্যে গুরুত্বপূর্ণ পার্থক্য রয়েছে:

  • ওয়েব কর্মীদের বিপরীতে, পরিষেবা কর্মীরা আপনাকে নেটওয়ার্ক অনুরোধগুলিকে ( fetch ইভেন্টের মাধ্যমে) বাধা দিতে এবং পটভূমিতে ( push ইভেন্টের মাধ্যমে) পুশ এপিআই ইভেন্টগুলি শুনতে দেয়।
  • একটি পৃষ্ঠা একাধিক ওয়েব কর্মী তৈরি করতে পারে, তবে একজন একক পরিষেবা কর্মী সমস্ত সক্রিয় ট্যাবগুলিকে নিয়ন্ত্রণ করে যার সাথে এটি নিবন্ধিত ছিল।
  • ওয়েব ওয়ার্কারের জীবনকাল এটির অন্তর্গত ট্যাবের সাথে শক্তভাবে মিলিত হয়, যখন পরিষেবা কর্মীর জীবনচক্র এটি থেকে স্বাধীন। সেই কারণে, একটি ওয়েব কর্মী যেখানে চলছে সেই ট্যাবটি বন্ধ করে দিলে তা বন্ধ হয়ে যাবে, যখন একজন পরিষেবা কর্মী ব্যাকগ্রাউন্ডে চালানো চালিয়ে যেতে পারেন, এমনকি সাইটের কোনো সক্রিয় ট্যাব খোলা না থাকলেও৷

ব্যবহারের ক্ষেত্রে

উভয় ধরনের কর্মীদের মধ্যে পার্থক্য নির্দেশ করে যে কোন পরিস্থিতিতে কেউ একটি বা অন্যটি ব্যবহার করতে চাইতে পারে:

UI ব্লক করা এড়াতে, ওয়েব কর্মীদের ব্যবহারের ক্ষেত্রে সাধারণত একটি সেকেন্ডারি থ্রেডে অফলোডিং কাজের (যেমন ভারী গণনার ) সাথে সম্পর্কিত।

একটি ওয়েব কর্মীকে উইন্ডো অবজেক্ট থেকে একটি লিঙ্ক দেখানো ডায়াগ্রাম।
  • উদাহরণ: ভিডিওগেম PROXX তৈরি করা দলটি ব্যবহারকারীর ইনপুট এবং অ্যানিমেশনের যত্ন নেওয়ার জন্য মূল থ্রেডটিকে যতটা সম্ভব বিনামূল্যে ছেড়ে দিতে চেয়েছিল। এটি অর্জনের জন্য, তারা একটি পৃথক থ্রেডে গেমের যুক্তি এবং রাষ্ট্রীয় রক্ষণাবেক্ষণ চালানোর জন্য ওয়েব কর্মীদের ব্যবহার করেছিল
ভিডিওগেম PROXX এর একটি স্ক্রিনশট।

পরিষেবা কর্মীদের কাজগুলি সাধারণত নেটওয়ার্ক প্রক্সি হিসাবে কাজ করা, ব্যাকগ্রাউন্ডের কাজগুলি পরিচালনা করা এবং ক্যাশিং এবং অফলাইনের মতো জিনিসগুলির সাথে সম্পর্কিত।

ভিডিওগেম PROXX এর একটি স্ক্রিনশট।

উদাহরণ: একটি পডকাস্ট PWA- তে, কেউ অফলাইনে থাকা অবস্থায় ব্যবহারকারীদের সম্পূর্ণ পর্বগুলি ডাউনলোড করার অনুমতি দিতে চাইতে পারে। একজন পরিষেবা কর্মী, এবং বিশেষ করে, ব্যাকগ্রাউন্ড ফেচ এপিআই সেই উদ্দেশ্যে ব্যবহার করা যেতে পারে। এইভাবে, পর্বটি ডাউনলোড করার সময় ব্যবহারকারী ট্যাবটি বন্ধ করে দিলে, কাজটি বাধাগ্রস্ত করতে হবে না।

একটি পডকাস্ট PWA এর একটি স্ক্রিনশট৷
একটি ডাউনলোডের অগ্রগতি নির্দেশ করতে UI আপডেট করা হয়েছে (বামে)। পরিষেবা কর্মীদের ধন্যবাদ, সমস্ত ট্যাব বন্ধ হয়ে গেলে (ডানে) অপারেশন চলতে পারে৷

টুল এবং লাইব্রেরি

উইন্ডো এবং কর্মী যোগাযোগ বিভিন্ন নিম্ন স্তরের API ব্যবহার করে বাস্তবায়ন করা যেতে পারে। সৌভাগ্যবশত, এমন লাইব্রেরি রয়েছে যা এই প্রক্রিয়াটিকে বিমূর্ত করে, সবচেয়ে সাধারণ ব্যবহারের ক্ষেত্রে যত্ন নেয়। এই বিভাগে, আমরা তাদের মধ্যে দুটিকে কভার করব যারা যথাক্রমে ওয়েব কর্মীদের এবং পরিষেবা কর্মীদের উইন্ডোর যত্ন নেয়: Comlink এবং Workbox

ভিডিওগেম PROXX এর একটি স্ক্রিনশট।

কমলিংক হল একটি ছোট (1.6k) RPC লাইব্রেরি যা ওয়েব ওয়ার্কার ব্যবহার করে এমন ওয়েবসাইট তৈরি করার সময় অনেক অন্তর্নিহিত বিবরণের যত্ন নেয়। এটি PROXX এবং Squosh- এর মতো ওয়েবসাইটে ব্যবহার করা হয়েছে। এর প্রেরণা এবং কোড নমুনার একটি সারসংক্ষেপ এখানে পাওয়া যাবে।

ওয়ার্কবক্স

ওয়ার্কবক্স হল একটি জনপ্রিয় লাইব্রেরি যা পরিষেবা কর্মীদের ব্যবহার করে এমন ওয়েবসাইট তৈরি করার জন্য। এটি ক্যাশিং, অফলাইন, ব্যাকগ্রাউন্ড সিঙ্ক্রোনাইজেশন ইত্যাদির মতো সেরা অনুশীলনগুলির একটি সেট প্যাকেজ করে৷ workbox-window মডিউল পরিষেবা কর্মী এবং পৃষ্ঠার মধ্যে বার্তা বিনিময় করার একটি সুবিধাজনক উপায় প্রদান করে৷

পরবর্তী পদক্ষেপ

এই সিরিজের বাকি অংশটি উইন্ডো এবং পরিষেবা কর্মী যোগাযোগের নিদর্শনগুলির উপর দৃষ্টি নিবদ্ধ করে:

  • আবশ্যিক ক্যাশিং নির্দেশিকা : পৃষ্ঠা থেকে একজন পরিষেবা কর্মীকে কল করা রিসোর্স ক্যাশে আগাম (যেমন প্রিফেচিং পরিস্থিতিতে)।
  • ব্রডকাস্ট আপডেট : গুরুত্বপূর্ণ আপডেট সম্পর্কে অবহিত করার জন্য পরিষেবা কর্মী থেকে পৃষ্ঠায় কল করা (যেমন ওয়েবসাইটের একটি নতুন সংস্করণ উপলব্ধ)।
  • দ্বি-মুখী যোগাযোগ : একজন পরিষেবা কর্মীকে একটি কাজ অর্পণ করা (যেমন একটি ভারী ডাউনলোড), এবং পৃষ্ঠাটিকে অগ্রগতি সম্পর্কে অবহিত করা।

উইন্ডো এবং ওয়েব কর্মী যোগাযোগের নিদর্শনগুলির জন্য চেক আউট করুন: ব্রাউজারের প্রধান থ্রেড থেকে জাভাস্ক্রিপ্ট চালানোর জন্য ওয়েব কর্মীদের ব্যবহার করুন