آموزش

سرویس ورکر (service worker) چیست و چه کاربردی دارد؟

برای توضیح service worker ابتدا باید ذهنتان را با چند مطلب دیگر آشنا کنیم. زبان جاوا اسکریپت در زمان اجرا، یک زبان single thread است، به این معنی که به مانند یک کلاف نخ برای رسیدن به قسمت خاصی از دستورات، مفسر برنامه باید تمام مسیر قبل از آن را پیموده باشد.

این بدان معنی است که برعکس زبان های برنامه نویسی Multi thread مانند پایتون، C++، جاوا و … که همزمان می توانند چند بخش از دستورات را بدون نیاز به پایان دادن بخش قبلی به اجرا در بیاورند، جاوا اسکریپت تنها قادر است که در هر زمان مشخص فقط یک بخش را به اجرا دربیاورد و برای رفتن به بخش بعدی، ضروری ست که بخش، تابع یا خط کد فعلی به پایان خود رسیده باشد.

برای مطالعه در مورد تفاوت های جاوا و جاوا اسکریپت روی عنوان کلیک کنید!

اما چه زمانی این موضوع مشکل ساز می شود؟

جاوا اسکریپت پس از HTML و CSS سومین بخش مهم “برنامه نویسی وب” و سایت های اینترنتی است. البته جاوا اسکریپت یک زبان کامل نیست و همانطورکه از نامش هم پیداست یک زبان اسکریپت نویسی است.

در سال های اخیر زمانی که صحبت از سایت های اینترنتی به میان می آید، اصول سئو بسیار خودنمایی می کنند.

برخی از اصول مهم سئو را می توانید در مطلبی با عنوان آموزش سئو مطالعه کنید.

سرعت بارگذاری صفحه

یکی از اهداف اولیه سئو، جذب کاربر و در اصطلاح نگه داشتن او در سایت است. این موضوع دارای خصیصه های بسیاری است که یکی از ابتدایی ترین آن ها سرعت لود صفحه است.

تصور کنید به دنبال یک مطلب یا محصول هستید و به پیشنهاد موتور جستجو یک وب سایت را باز نموده اید. یک ثانیه، دو ثانیه، سه ثانیه.

اصل اول سئو: اگر تا حداکثر سه ثانیه سایت شما به صورت کامل لود نشد و یا حداقلی از محتوای شما برای نمایش به کاربر به اجرا درنیامد، “close”.

به همین راحتی کاربر از سایت شما صرف نظر کرده و به سراغ پیشنهادات بعدی موتور جستجو می رود، با همین مثال کوچک اهمیت زمان لود شدن صفحات اینترنتی کاملا مشخص می شود.

با یک مثال برگردیم به بحث تک نخ بودن (single thread) اجرای جاوا اسکریپت.

برای طراحی و توسعه سایت مان از طراح می خواهیم که تعداد زیادی آیتم خوش آب و رنگ، انیمیشن ها و افکت ها و… پیاده سازی کند.

اگر قرار باشد که بیش از سه ثانیه برای بارگذاری همه آیتم های سایت زمان نیاز داشته باشیم، تمام آن مطالب و آیتم ها فقط به درد خودمان و طراح سایت خواهند خورد، نه هیچ مشتری و کاربری.

اما آیا پشتیبانی و مسئول توسعه جاوا اسکریپت با این همه دب دبه و کب کبه به این موضوع فکر نکرده است؟ جواب یک خیر بزرگ است.

Service worker ها به وجود آمده اند تا بتوانیم با بهره گیری از آن ها تاخیر در بارگذاری صفحه را به حداقل برسانیم.

نحوه عملکرد service worker چگونه است؟

سرویس ورکر یک اسکریپت است که مرورگر به صورت مجزا از کد های سایت به آن می پردازد. همین امر باعث دور زدن single thread بودن جاوا اسکریپ می شود. اجرای سرویس ورکر در بک گراند انجام می شود.

این سرویس قابلیت های متعددی ارائه می دهد که برخی از آن ها عبارتند از:

  • کش کردن برخی از بخش های سایت
  • وب پوش
  • کار کردن آفلاین با سایت
  • و …

با قرار دادن یک سرویس ورکر در کد های جاوا اسکریپت، ابتدا مرورگر آن را نصب می کند. بعد از نصب، سرویس ورکر شروع به کش کردن اطلاعات ایستای سایت می کند.

چرخه عملکرد سرویس سرویس ورکر

چرخه حیات service worker

سرویس ورکر را ابتدا باید در کد اصلی پیاده سازی کرد. با اینکه اکثر مرورگر ها از سرویس ورکر پشتیبانی می کنند، اما بهتر است که در ابتدا از این مسئله اطمینان حاصل کنیم. (تاییدیه گرفتن از مرورگر در ابتدای کد نویسی سرویس ورکر)

زمانی که مرورگر با کد های سرویس ورکری مواجه می شود، ابتدا شروع به نصب آن در پس زمینه می کند. اگر نصب موفقیت آمیز باشد، سرویس ورکر شروع به کش کردن بخش های تعیین شده از سایت می کند.

در حالت نصب موفق، سرویس ورکر دو حالت دارد:

  • حالت بیکار یا idle
  • حالت عمل یا fetch/message

دو نکته مهمی که در مورد service worker باید بدانیم!

  • یکی از قابلیت های خوبی که سرویس ورکر ها بوجود می آوردند، این است که کاربر در حالت آفلاین هم می تواند سایت را بازدید کند (سایتی که از قبل لود شده باشد).
استفاده آفلاین از service worker
  • به خاطر بک گراند اجرا شدن سرویس ورکر ها و عدم تداخل با کد های جاوا اسکریپت، سرعت لود صفحه بالا می رود.

در پایان ذکر این نکته خالی از لطف نیست که service worker تنها در وب سایت های اینترنتی کاربرد ندارد، بلکه در اپلیکیشن های تحت وب هم بسیار پرکاربرد است.

نوشته های مشابه

‫3 دیدگاه ها

  1. سوال: چه تفاوتی دارد اگر به جای استفاده از service worker ، بعد از لود شدن اجزای اصلی صفحه برخی توابع جاوااسکریپ را فراخوانی کنیم؟ مثل کاری که با jquery میکنیم

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

دکمه بازگشت به بالا