Service Worker چیست ؟
Service Worker یک ابزار جدید در مرورگرهای مدرن است که به عنوان یک پراکسی برای پاسخگویی به نیازهای یک PWA یا اپلیکیشن تحت وب عمل میکند. با استفاده از Service Worker این امکان وجود دارد که بتوانیم تمامی درخواستهای ارسال شده شامل فایلهای ایستا یا درخواستهای ارسال شده از سمت جاوااسکریپت را پیش از هدایت به سرور بررسی کنیم و در صورت نیاز پاسخ را بدون ایجاد یک تراکنش واقعی، به نرمافزار برگردانیم.
این کار مزیتهای زیادی به همراه دارد.
- امکان کش شدن محتواهایی که مرورگر امکان کش کردن آن را ندارد.
- امکان بهروزرسانی محتوای کش در زمانهای دلخواه.
- امکان پردازش و کامپایل فایلهای جانبی مورد نیاز اپلیکیشن( شامل less و CoffeeScript و ... )
- پاسخگویی به Push Notificationها و اعلام آنها به کاربر
- کاهش چشمگیر نیاز به درخواستهای سمت سرور برای اطلاعات تکراری مشترک بین صفحات
- افزایش سرعت بارگزاری صفحات اپلیکیشن
- امکان ایجاد ابزارهایی که صد در صد آفلاین فعالیت میکنند
- امکان بررسی قطع بودن شبکه و نمایش پیامهای هشدار مرتبط برای بهبود تجربهی کاربری
سرویس ورکر چه طور کار میکند ؟
نیاز به ساخت اپلیکیشنهای تحت وب که قابلیت اجرا به صورت آفلاین را داشته باشند از مدتها قبل وجود داشته است. سرویس ورکر هم بخشی از نیازمندیهای مربوط به این ساختار جدید را فراهم میکند و ویژگیهایی را در اختیار برنامهنویسان قرار میدهد که پیش از این غیرممکن یا مشکل بوده است.
یک وب اپلیکیشن در زمان اجرا میتواند یک سرویس ورکر را به مرورگر معرفی کند تا مرورگر از آن برای پردازش درخواستهای اپلیکیشن به عنوان یک پراکسی کمک بگیرد. اینکه سرویس ورکر چه کاری انجام میدهد و چه طور با درخواستها تعامل میکند، بر عهدهی سرویس ورکر است و مرورگر دخالتی در آن ندارد.
یک سرویس ورکر با پردازش رویدادها یا Eventهایی که از سمت مرورگر ارسال میشود، درخواستهای موجود را بررسی میکند و پاسخها مورد نظر را با یکی از روشهای زیر ایجاد میکند:
- استفاده از کش محلی
- درخواست از سرور
- پردازش اطلاعات موجود و ساخت یک پاسخ جدید( مثلا مرتبسازی اطلاعات از داخل یک پایگاه داده )
سرویس ورکر به عنوان یک پراکسی تنها کار پردازش اطلاعات را دارد و مستقیما نمیتواند DOM را ویرایش کند. استفاده از سرویس ورکر تنها در فضای امن https امکانپذیر است و اپلیکیشنهایی که روی http کار کنند نمیتوانند از مزایای آن استفاده کنند.
فراخوانی سرویس ورکر
برای فعالسازی سرویس ورکر در اپلیکیشن خود میبایست از متد ServiceWorkerContainer.register استفاده کنید. توضیحات بیشتر و راهنمای استفاده از این متد را اینجا مشاهده کنید.
سرویس ورکر یک فایل جاوااسکریپت است که معمولا در مسیر اصلی اپلیکیشن شما واقع میشود.