کارگران خدماتی ابزارهای باورنکردنی را ارائه می دهند، اما کار با آنها در ابتدا دشوار است. Workbox استفاده از کارگران خدماتی را آسانتر میکند. با این حال، از آنجا که کارکنان خدمات مشکلات سخت را حل می کنند، هرگونه انتزاعی از آن فناوری نیز بدون درک آن مشکل خواهد بود. بنابراین، این چند بیت اولیه از مستندات، آن فناوری زیربنایی را قبل از ورود به مشخصات Workbox پوشش میدهد.
برای مشاهده لیست در حال اجرا از کارکنان خدمات، chrome://serviceworker-internals/
در نوار آدرس خود وارد کنید.
کارگران خدماتی چه چیزی ارائه می دهند؟
کارکنان خدمات دارایی های تخصصی جاوا اسکریپت هستند که به عنوان پروکسی بین مرورگرهای وب و سرورهای وب عمل می کنند. هدف آنها بهبود قابلیت اطمینان با ارائه دسترسی آفلاین و همچنین افزایش عملکرد صفحه است.
چرخه زندگی برنامه مانند که به تدریج افزایش می یابد
کارکنان خدمات پیشرفتی برای وب سایت های موجود هستند. این بدان معنی است که اگر کاربران در مرورگرهایی که از سرویسدهندگان پشتیبانی نمیکنند از وبسایتهایی که از آنها استفاده میکنند بازدید کنند، هیچ عملکرد خط پایه خراب نمیشود. این چیزی است که وب در مورد آن است.
کارکنان خدمات به تدریج وب سایت ها را از طریق چرخه عمر مشابه برنامه های کاربردی پلت فرم خاص بهبود می بخشند. به این فکر کنید که وقتی یک برنامه بومی از یک فروشگاه برنامه نصب می شود چه اتفاقی می افتد:
- درخواست دانلود اپلیکیشن می باشد.
- برنامه دانلود و نصب می شود.
- برنامه آماده استفاده است و می تواند راه اندازی شود.
- برنامه برای نسخه های جدید به روز می شود.
چرخه عمر کارگر خدمات مشابه است، اما با رویکرد ارتقاء تدریجی. در اولین بازدید از یک صفحه وب که یک سرویسکار جدید را نصب میکند، بازدید اولیه از یک صفحه عملکرد پایه آن را در حالی که سرویسکار دانلود میکند، ارائه میکند. پس از نصب و فعال شدن یک سرویسکار، صفحه را کنترل میکند تا قابلیت اطمینان و سرعت بهتری ارائه دهد.
دسترسی به یک API حافظه پنهان مبتنی بر جاوا اسکریپت
یکی از جنبههای ضروری فناوری سرویسکار، رابط Cache
است که مکانیزم ذخیرهسازی کاملاً جدا از حافظه پنهان HTTP است. رابط Cache
را می توان در محدوده Service Worker و در محدوده رشته اصلی دسترسی داشت. این تعداد زیادی فرصت را برای تعاملات کاربر محور با یک نمونه Cache
باز می کند.
در حالی که کش HTTP از طریق دستورالعمل های کش مشخص شده در هدرهای HTTP تحت تاثیر قرار می گیرد، رابط Cache
از طریق جاوا اسکریپت قابل برنامه ریزی است. این بدان معناست که پاسخهای کش برای درخواستهای شبکه را میتوان بر اساس هر منطقی که برای یک وبسایت خاص بهترین است، باشد. مثلا:
- دارایی های استاتیک را در اولین درخواست برای آنها در حافظه پنهان ذخیره کنید و فقط برای هر درخواست بعدی آنها را از حافظه پنهان ارائه دهید.
- نشانهگذاری صفحه را در حافظه پنهان ذخیره کنید، اما فقط در سناریوهای آفلاین نشانهگذاری را از حافظه پنهان ارائه دهید.
- پاسخهای قدیمی را برای داراییهای خاص از حافظه پنهان ارائه دهید، اما آن را از شبکه در پسزمینه بهروزرسانی کنید.
- محتوای جزئی را از شبکه پخش کنید و آن را با پوسته برنامه از حافظه پنهان جمع کنید تا عملکرد ادراکی را بهبود بخشد.
هر یک از اینها نمونه ای از یک استراتژی ذخیره سازی هستند. استراتژیهای ذخیرهسازی حافظه نهان، تجربههای آفلاین را ممکن میسازند، و میتوانند عملکرد بهتری را با بررسیهای تأیید مجدد با تأخیر بالا در کنارهها ارائه کنند که کش HTTP آغاز میشود. قبل از فرو رفتن در Workbox، چند استراتژی ذخیره سازی و کدهایی که باعث کارکرد آنها می شود، بررسی می شود.
یک API ناهمزمان و رویداد محور
انتقال داده از طریق شبکه ذاتاً ناهمزمان است. درخواست یک دارایی، برای پاسخگویی سرور به آن درخواست و دانلود شدن پاسخ زمان می برد. زمان درگیر متفاوت و نامشخص است. کارکنان خدمات این ناهمزمانی را از طریق یک API مبتنی بر رویداد، با استفاده از تماسهای برگشتی برای رویدادهایی مانند:
- وقتی یک سرویسکار در حال نصب است.
- وقتی یک کارگر خدماتی در حال فعال شدن است.
- هنگامی که یک سرویس دهنده درخواست شبکه را تشخیص می دهد .
رویدادها را می توان با استفاده از یک addEventListener
API آشنا ثبت کرد. همه این رویدادها به طور بالقوه می توانند با رابط Cache
تعامل داشته باشند. به ویژه، توانایی اجرای تماسهای برگشتی در هنگام ارسال درخواستهای شبکه برای ارائه آن قابلیت اطمینان و سرعت ضروری است.
انجام کار ناهمزمان در جاوا اسکریپت شامل استفاده از وعدهها است. از آنجایی که وعدهها زیربنای async
و await
نیز هستند، از این ویژگیهای جاوا اسکریپت میتوان برای سادهسازی کد سرویسکار (و Workbox!) برای تجربه بهتر توسعهدهنده استفاده کرد.
پیش کش و کش در زمان اجرا
تعامل بین یک سرویس دهنده و یک نمونه Cache
شامل دو مفهوم کش متمایز است: پیش کش و ذخیره سازی زمان اجرا. هر یک از اینها برای مزایایی که یک کارگر خدماتی می تواند ارائه دهد، مرکزی است.
پیش کش فرآیند ذخیره سازی دارایی ها قبل از موعد است، معمولاً در طول نصب یک سرویس دهنده. با پیش کش، دارایی های استاتیک کلیدی و مواد مورد نیاز برای دسترسی آفلاین می توانند دانلود و در یک نمونه Cache
ذخیره شوند. این نوع کش سرعت صفحه را برای صفحات بعدی که به دارایی های پیش کش نیاز دارند نیز بهبود می بخشد.
کش در زمان اجرا زمانی است که یک استراتژی ذخیره سازی روی دارایی ها همانطور که در طول زمان اجرا از شبکه درخواست می شود اعمال می شود. این نوع کش مفید است زیرا دسترسی آفلاین به صفحات و دارایی هایی را که کاربر قبلاً بازدید کرده است تضمین می کند.
وقتی با هم ترکیب شوند، این رویکردها برای استفاده از رابط Cache
در یک سرویسکار، مزیت فوقالعادهای برای تجربه کاربر فراهم میکنند و رفتارهایی شبیه برنامه را برای صفحات وب معمولی ارائه میدهند.
جداسازی از موضوع اصلی
وضعیت عملکرد جاوا اسکریپت یک چالش در حال تکامل برای وب است و از دیدگاه کاربر، به قابلیت های دستگاه و دسترسی به اینترنت پرسرعت بستگی دارد. هرچه جاوا اسکریپت بیشتر استفاده شود، ساختن وب سایت های سریعی که تجربیات کاربر لذت بخشی را ارائه می دهند، چالش برانگیزتر می شود.
کارگران خدمات مانند کارگران وب هستند که تمام کارهایی که انجام می دهند در رشته های خودشان انجام می شود. این بدان معناست که وظایف کارکنان خدمات برای جلب توجه با سایر وظایف در موضوع اصلی رقابت نمی کنند. کارگران خدماتی از نظر طراحی کاربر اول هستند!
جاده پیش رو
این مستندات فقط یک نمای کلی است. چند موضوع دیگر در مورد کارگران خدماتی وجود دارد که قبل از پوشش مناسب Workbox باید به آنها پرداخت، اما مطمئن باشید: با درک کامل از کارگران خدمات، استفاده از Workbox تجربه آسانتر و سازندهتری خواهد بود.