Ringkasan pekerja layanan

Pekerja layanan menawarkan utilitas yang luar biasa, tetapi awalnya mungkin sulit untuk dikerjakan. Workbox membuat pekerja layanan lebih mudah digunakan. Namun, karena pekerja layanan memecahkan masalah yang sulit, abstraksi apa pun dari teknologi itu juga akan rumit tanpa memahaminya. Jadi, beberapa dokumen pertama ini akan membahas teknologi dasar tersebut sebelum membahas detail Workbox.

Untuk melihat daftar pekerja layanan yang berjalan, masukkan chrome://serviceworker-internals/ ke kolom URL Anda.

Daftar pekerja layanan yang berjalan.

Apa yang disediakan pekerja layanan?

Pekerja layanan adalah aset JavaScript khusus yang bertindak sebagai proxy antara browser web dan server web. Mereka bertujuan untuk meningkatkan keandalan dengan menyediakan akses offline, serta meningkatkan performa halaman.

Siklus proses seperti aplikasi yang meningkat secara progresif

Pekerja layanan adalah peningkatan untuk situs yang sudah ada. Artinya, jika pengguna di browser yang tidak mendukung pekerja layanan mengunjungi situs yang menggunakannya, tidak ada fungsi dasar pengukuran yang akan rusak. Itulah inti dari web.

Pekerja layanan secara bertahap meningkatkan kualitas situs melalui siklus proses yang mirip dengan aplikasi khusus platform. Pikirkan apa yang terjadi jika aplikasi native diinstal dari app store:

  • Ada permintaan untuk mendownload aplikasi.
  • Aplikasi didownload dan diinstal.
  • Aplikasi siap digunakan dan dapat diluncurkan.
  • Aplikasi diupdate untuk rilis baru.

Siklus proses pekerja layanan serupa, tetapi dengan pendekatan {i>progressive enhancement<i}. Pada kunjungan pertama ke halaman web yang menginstal pekerja layanan baru, kunjungan awal ke halaman menyediakan fungsi dasar pengukuran saat pekerja layanan mendownload. Setelah diinstal dan diaktifkan, pekerja layanan mengontrol halaman untuk menawarkan keandalan dan kecepatan yang lebih baik.

Akses ke API caching berbasis JavaScript

Aspek yang sangat penting dari teknologi pekerja layanan adalah antarmuka Cache, yang merupakan mekanisme caching yang sepenuhnya terpisah dari cache HTTP. Antarmuka Cache dapat diakses dalam cakupan pekerja layanan dan dalam cakupan thread utama. Langkah ini membuka banyak kemungkinan untuk interaksi berbasis pengguna dengan instance Cache.

Sementara cache HTTP dipengaruhi melalui perintah caching yang ditentukan dalam header HTTP, antarmuka Cache dapat diprogram melalui JavaScript. Ini berarti bahwa caching respons untuk permintaan jaringan dapat didasarkan pada logika apa pun yang terbaik untuk situs tertentu. Contoh:

  • Simpan aset statis dalam cache pada permintaan pertama untuknya, dan hanya tayangkan aset tersebut dari cache untuk setiap permintaan berikutnya.
  • Simpan markup halaman dalam cache, tetapi hanya tayangkan markup dari cache dalam skenario offline.
  • Menampilkan respons yang sudah tidak berlaku untuk aset tertentu dari cache, tetapi memperbaruinya dari jaringan di latar belakang.
  • Melakukan streaming sebagian konten dari jaringan dan merakitnya dengan shell aplikasi dari cache untuk meningkatkan kinerja persepsi.

Setiap opsi tersebut adalah contoh strategi caching. Strategi penyimpanan ke cache memungkinkan pengalaman offline, dan dapat menghasilkan performa yang lebih baik dengan melakukan side-step samping dengan validasi ulang latensi tinggi, dan memulai pemeriksaan cache HTTP. Sebelum masuk ke Workbox, akan ada peninjauan beberapa strategi dan kode caching yang membuatnya berfungsi.

API asinkron dan berbasis peristiwa

Mentransfer data melalui jaringan pada dasarnya bersifat asinkron. Perlu waktu untuk meminta aset, agar server merespons permintaan tersebut, dan agar respons didownload. Waktu yang digunakan beragam dan tidak pasti. Pekerja layanan mengakomodasi asinkronitas ini melalui API berbasis peristiwa, menggunakan callback untuk peristiwa seperti:

Peristiwa dapat didaftarkan menggunakan addEventListener API yang sudah dikenal. Semua peristiwa ini berpotensi dapat berinteraksi dengan antarmuka Cache. Secara khusus, kemampuan untuk menjalankan callback saat permintaan jaringan dikirim sangat penting dalam memberikan keandalan dan kecepatan yang dicari.

Melakukan tugas asinkron di JavaScript melibatkan penggunaan promise. Karena promise juga mendasari async dan await, fitur JavaScript tersebut juga dapat digunakan untuk menyederhanakan kode pekerja layanan (dan Workbox) untuk pengalaman developer yang lebih baik.

Precaching dan cache runtime

Interaksi antara pekerja layanan dan instance Cache melibatkan dua konsep caching yang berbeda: precaching dan caching runtime. Masing-masing merupakan manfaat utama yang dapat diberikan oleh pekerja layanan.

Precaching adalah proses meng-cache aset sebelumnya, biasanya selama penginstalan pekerja layanan. Dengan precaching, aset dan materi statis utama yang diperlukan untuk akses offline dapat didownload dan disimpan dalam instance Cache. Jenis caching ini juga meningkatkan kecepatan halaman ke halaman berikutnya yang memerlukan aset yang di-precache.

Cache runtime adalah saat strategi caching diterapkan ke aset saat diminta dari jaringan selama runtime. Cache semacam ini berguna karena menjamin akses offline ke halaman dan aset yang telah dikunjungi pengguna.

Jika digabungkan, pendekatan untuk menggunakan antarmuka Cache dalam pekerja layanan ini memberikan manfaat luar biasa bagi pengalaman pengguna, dan memberikan perilaku seperti aplikasi ke halaman web biasa.

Isolasi dari thread utama

Status performa JavaScript adalah tantangan yang terus berkembang untuk web, dan dari perspektif pengguna, kondisi ini bergantung pada kemampuan perangkat dan akses ke internet berkecepatan tinggi. Semakin banyak JavaScript yang digunakan, semakin sulit untuk membuat situs cepat yang memberikan pengalaman pengguna yang menyenangkan.

Pekerja layanan mirip seperti pekerja web karena semua pekerjaan yang dilakukannya dilakukan di thread mereka sendiri. Ini berarti tugas pekerja layanan tidak akan bersaing mendapatkan perhatian dengan tugas lain di thread utama. Pekerja layanan secara desain mengutamakan pengguna.

Jalan di depan

Dokumentasi ini hanyalah ikhtisar. Ada beberapa subjek lain yang perlu dibahas tentang pekerja layanan sebelum membahas Workbox dengan tepat, tetapi yakinlah: dengan pemahaman yang kuat tentang pekerja layanan, menggunakan Workbox akan menjadi pengalaman yang lebih mudah dan lebih produktif.