همه چیز درباره serviceworker در وب اپلیکیشن

همه چیز درباره serviceworker در وب اپلیکیشن


serviceworker وب اپلیکیشن ها عبارت است از یک اسکریپت که در پس زمینه و در یک رشته مجزا از رابط کاربری مرورگر اجرا می شود. کش سرویس ورکر به وبسایت این اجازه را می دهد که به صورت آفلاین کار کند. در واقع، سرویس ورکرها وبسایت را به یک وب اپلیکیشن پیشرونده(PWA) ارتقاء می دهند. سرویس ورکرها یکپارچه سازی عمیق پلتفرم مانند کشینگ غنی، اعلان های فشاری و همگام سازی پس زمینه را امکان پذیر می کنند. این نوع اسکریپت ها به گونه ای طراحی شده اند که یک پلتفرم توسعه پذیر باشند و ویژگی های اضافی به این مجموعه افزوده خواهند شد.

what is serviceworker
سرویس ورکرها نمی توانند به DOM دسترسی داشته باشند، اما قادر هستند که کلیه درخواست های شبکه را ردیابی کنند. به این ترتیب، توسعه دهندگان می توانند نحوه پردازش درخواست ها را کنترل کرده و یک شیوه غنی را فراهم کنند تا وبسایت ها به صورت آفلاین کار کنند. سرویس ورکرها، رویدادی تحول آفرین برای وب اپلیکیشن ها تلقی می شوند. این یک اغراق ساده نیست، زیرا آن ها قابلیت های مورد نیاز بسیاری را ارائه می دهند.

 

سرویس ورکر وب اپلیکیشن چگونه کار می کند؟

serviceworker، همانند یک پروکسی سرور، بین مرورگر و شبکه قرار می گیرد و مجموعه ای از وظایف غیر UI محور را مدیریت می کند. سرویس ورکرها رویداد محور و در خارج از فرآیند مرورگر هستند. به این ترتیب، آن ها می توانند بدون فعال بودن مرورگر اجرا شوند. چنانکه اشاره شد، serviceworker اسکریپتی است که در یک رشته مجزا از رابط کاربری (UI) اجرا می شود. از همین رو، سرویس ورکرها با اجرای وظایف غیر UI، باعث می شوند که وبسایت عملکرد بهتری داشته باشد.


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


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

سرویس ورکر
توسعه پذیری serviceworker وب اپلیکیشن ها

یکی از ویژگی های سرویس ورکر که دست کم گرفته می شود، توسعه پذیری آن است. دو ویژگی اصلی serviceworker، اعلان های فشاری و همگام سازی در پس زمینه است. در حال حاضر، صحبت از APIهای جدیدی است که در آینده باید شاهد حضور آن ها باشیم. سرویس ورکر در رشته خود فعال است و به DOM دسترسی ندارد.
همچنین، یک شرط لازم، استفاده از پروتکل HTTPS است. این بدان خاطر است که سرویس ورکرها ویژگی های قدرتمندی را ارائه می دهند. پروتکل HTTPS از بروز بسیاری از حملات رایج جلوگیری می کند. امروزه همه سایت ها باید از پروتکل HTTPS استفاده کنند، زیرا قابلیت های امنیتی بسیاری را ارائه می کند و همچنین، موانع پیاده سازی برداشته شده اند.

ssl چیست؟


به علاوه، سرویس ورکرها ناهمزمان هستند. این بدان معنی است که کلیه APIها از promise پشتیبانی می کنند. این همچنین بدان معنی است که دسترسی به برخی از APIها و توابع در سرویس ورکرها امکان پذیر نیست. از مهم ترین آن ها می توان به LocalStorage اشاره کرد. در مقابل، برای ذخیره سازی داده ها باید از IndexedDB استفاده شود.


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

قبل از آنکه به ویژگی های سرویس ورکرها بپردازیم، بایستی با چرخه عمر آن شویم.در طراحی سایت و طراحی وب اپلیکیشن  باید سرویس ورکرها را ثبت کند. از آنجایی که برخی مرورگرها هنوز هم از serviceworker وب اپلیکیشن ها پشتیبانی نمی کنند، قبل از ثبت سرویس ورکر، باید آن را بررسی کنید. چند مرحله برای راه اندازی یک سرویس ورکر وجود دارد که به آن ها چرخه عمر serviceworker گفته می شود. این سه مرحله عبارتند از:


•    نصب سرویس ورکر. مرورگر شروع به نصب سرویس ورکر در پس زمینه می کند. در این مرحله، کش کردن اکثر فایل های استاتیک با موفقیت انجام می شود. چنانچه کنجکاو هستید که از کجا می توانید به assetهای کش دسترسی پیدا کنید، به تب اپلیکیشن در DevTools کروم رجوع کنید.


•    فعال سازی سرویس ورکر. از این مرحله عمدتاً برای حذف کردن نسخه قدیمی تر سرویس ورکر استفاده می شود. پس از به روزرسانی برخی از assetهای اپلیکیشن و زمانی که می خواهند سرویس ورکر assetهای جدید را کش کند (پس از حذف assetهای قدیمی)، این کار را انجام می دهند.


•    واکشی محتوای مورد نیاز از کش. این مرحله، مسئولیت واکشی assetهای کش شده را به عهده دارد تا به وب اپلیکیشن اجازه دهد که به صورت آفلاین کار کند. این مرحله زمانی اتفاق می افتد که درخواست به شبکه ارسال شود و داده های لازم قبلاً کش شده باشد.

serviceworker_pwa_kiantc
serviceworker وب اپلیکیشن ها چه مدت فعال باقی می ماند؟

هیچ قاعده و قانونی راجع به مدت زمان فعال بودن سرویس ورکرها وجود ندارد. موتور مرورگر به طور داخلی از مجموعه ای از فرآیندهای اکتشافی استفاده خواهد کرد تا زمان غیرفعال سازی سرویس ورکر را تعیین کند.


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


نکته مثبت قضیه آن است که تنها چند میلی ثانیه طول می کشد تا serviceworker وب اپلیکیشن ها فعال شود. در واقع، این روند به قدری سریع است که متوجه هیچ تأخیری نخواهید شد. به علاوه، چنانچه سرویس ورکری در کار نباشد، نیاز به اتخاذ اقدامات خاصی ندارید و وب اپلیکیشن شما کار خواهد کرد.


کدام مرورگرها از serviceworker پشتیبانی می کنند؟

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

طراحی اپلیکیشن


تفاوت بین سرویس ورکر و وب ورکر چیست؟

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


serviceworker بین شبکه و رابط کاربری، به عنوان پروکسی عمل می کند. اگر از یک صفحه استفاده شود که متداول ترین سناریو است، تمام درخواست های شبکه HTTPS از سرویس ورکر عبور می کنند. ارتباط بین رابط کاربری و سرویس ورکرها و وب ورکرها با استفاده از روش postMessage و رویداد پیام انجام می شود. چنانچه قبلاً برنامه نویسی چند رشته ای انجام داده باشید، این مدل برایتان بسیار آشنا خواهد بود.


ویژگی های کلیدی سرویس ورکر

برخی از ویژگی های کلیدی serviceworker وب اپلیکیشن ها عبارتند از:
•    سرویس ورکر عبارت است از یک فایل جاوا اسکریپت
•    سرویس ورکرها در یک رشته جداگانه از رابط کاربری اجرا می شوند.
•    سرویس ورکر نمی تواند مستقیماً به DOM دسترسی پیدا کند.
•    سرویس ورکر برای آنکه فعال شود، بایستی مجموعه ای از رویدادها را تحت عنوان چرخه عمر پشت سر بگذارد.
•    سرویس ورکرها تنها در حین استفاده فعال هستند، بنابراین به باتری فشار وارد نمی شود.
•    سرویس ورکر نیازمند پروتکل HTTPS است.
•    سرویس ورکر می تواند به یا از رابط کاربری پیام ارسال کند.
•    سرویس ورکر برای آنکه کار کند، به صفحه وب باز نیاز ندارد.
•    سرویس ورکرها توسط کلیه مرورگرهای مدرن از جمله سافاری اپل پشتیبانی می شوند.
•    سرویس ورکرها شبیه به وب ورکرها هستند، اما از جهات زیادی نسبت به آن ها برتری دارند.


تا اینجا چطور بود ؟

نتایج نظرسنجی ( ۲ ) ۳ / ۵

مقالات مرتبط

comments

پرسش و پاسخ

پرسش مورد نظر خود را مطرح نمایید