Heim  >  Artikel  >  Web-Frontend  >  Servicemitarbeiter

Servicemitarbeiter

WBOY
WBOYOriginal
2024-08-09 07:28:421065Durchsuche

Service Worker sind Web-APIs, die für „bestimmte“ Zwecke zwischen einem Browser, einer Anwendung und dem Internet verwendet werden können.

Service Workers

Service Worker sind Skripte, die im Hintergrund einer Webanwendung ausgeführt werden, getrennt vom Hauptbrowser-Thread. Sie ermöglichen Push-Benachrichtigungen, Hintergrundsynchronisierung und Offline-Funktionen. Servicemitarbeiter fungieren als Vermittler zwischen der Webanwendung, dem Browser und dem Netzwerk. Hier finden Sie Beispiele, wie und wann Servicemitarbeiter eingesetzt werden können:

1. Offline-Support:

  • Der Servicemitarbeiter speichert wichtige Ressourcen (HTML, CSS, JavaScript, Bilder) zwischen, wenn ein Benutzer eine Website zum ersten Mal besucht.
  • Kann beim nächsten Besuch aus dem Cache abgerufen werden, wodurch eine kontinuierliche Offline-Fähigkeit gewährleistet ist.

2. Push-Benachrichtigungen:

  • Servicemitarbeiter ermöglichen Ihnen die Zustellung von Push-Benachrichtigungen, auch wenn die Webanwendung nicht geöffnet ist.
  • Benachrichtigungen können durch externe Ereignisse oder Serveraktualisierungen ausgelöst werden.

3. Hintergrundsynchronisierung:

  • Servicemitarbeiter aktivieren die Hintergrundsynchronisierung, die es einer Anwendung ermöglicht, Daten zu aktualisieren oder neue Inhalte im Hintergrund abzurufen.
  • Dies ist nützlich für Datenaktualisierungen in Echtzeit.

4. Dynamisches Content-Caching:

  • Servicemitarbeiter können Inhalte basierend auf dem Benutzerverhalten auf einer Webseite dynamisch zwischenspeichern.
  • Dies trägt dazu bei, häufig aufgerufene Inhalte schnell bereitzustellen.

5. Leistungsoptimierung:

  • Servicemitarbeiter verbessern die Webseitenleistung erheblich, indem sie Assets und Ressourcen vorab zwischenspeichern.
  • Sie können Ressourcen basierend auf dem Benutzerverhalten selektiv laden, indem sie den Ladevorgang optimieren.

6. Hintergrundabruf:

  • Servicemitarbeiter ermöglichen das Laden im Hintergrund, wodurch auch große Dateien oder Ressourcen heruntergeladen werden können.

Wenn Sie eine Webseite besuchen, sendet die Webseite normalerweise eine Anfrage an den Server und der Server sendet die Daten an Sie zurück:

Service Workers

Wenn Sie einen Servicemitarbeiter registriert haben, wird dieser als Middleware zwischen dem Webbrowser und dem Server hinzugefügt:

Service Workers

Es stoppt die Anfrage an den Server und entscheidet, ob die Anfrage an den Server gesendet wird oder offline funktioniert. Und anstatt Ihnen in diesem Fall eine 404 Not Found-Seite anzuzeigen, können Sie die gesamte Seite offline anzeigen. Sie können auch benutzerdefinierte Offline-Seiten mit Servicemitarbeitern erstellen.

Wenn auf Ihrem Computer kein Internet vorhanden ist, wird eine Fehlerseite angezeigt.

Auch wenn kein Internet vorhanden ist, greifen wir mit einem Servicemitarbeiter auf die Webseite zu.

Service Worker Lifecycle & Event

REGISTRIERUNG → INSTALLIEREN → AKTIVIEREN → ABHOLEN

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Home</title>
    <!-- Scripts -->
    <script src="main.js" defer></script>
  </head>
  <body>
    <!-- istalgan kodlaringizni yozishingiz mumkin... -->
  </body>
</html>

Wir haben die Datei main.js mit HTML verbunden.

main.js

// service worker browser tomonidan support qilinishini tekshirib olamiz
if ('serviceWorker' in navigator) {
  // web sahifa browserga yuklanishi bilan ishlashini aytib o'tamiz
  window.addEventListener('load', () => {
    // 1. service workerni registratsiyadan o'tkazamiz.
    navigator.serviceWorker
      .register('sw.js') // bizda sm.js file ochib olishimiz kerak bo'ladi. va bu yerdagi register ushani target qiladi.
      .then((registration) =>
        console.log('Service Worker registered with scope:', registration.scope)
      )
      .catch((error) => {
        console.error('Service Worker registration failed:', error);
      });
  });
}

sw.js

// browser kashda qanday nom nilan saqlanishini bildirish uchun nom beramiz
const cacheName = 'my-cache-v1';

// Qaysi fayllarni kashlashini aytib o'tib ketamiz
const cacheFiles = ['index.html', 'posts.html', 'css/style.css', 'js/main.js'];

// 2. INSTALL qilamiz
self.addEventListener('install', (event) => {
  event.waitUntil(
        // kashdan biz bergan nom bilan joy ochadi va bizni fayllarimizni joylaydi.
    caches.open(cacheName).then((cache) => cache.addAll(cacheFiles))
  );
});

// 3. ACTIVATE qilish
self.addEventListener('activate', () => {
  console.log('Server worker activated');
});

// 4. FETCH, ya'ni oflayn holatimizda kashlangan fillarni ko'rsatish uchun olish
self.addEventListener('fetch', (event) => {
  event.respondWith(
    caches
      .match(event.request)
      .then((response) => response || fetch(event.request))
  );
});

Danach können wir sehen, dass die Aktivierung erfolgt ist, wenn wir zur Spalte „Anwendungen“ im Abschnitt „Entwicklungstools“ des Browsers gehen und den Abschnitt „Servicemitarbeiter“ sehen.

Service Workers

Wenn wir zum Cache-Speicherbereich gehen, erhalten wir die Dateien, die wir mit dem von uns angegebenen Namen markiert haben.

Service Workers

Und nachdem wir uns diese angesehen haben, können wir das Ergebnis sehen:

Wie Sie sehen, funktioniert es jetzt offline. Im Offline-Zustand ruft der Service Worker von dem für uns im Cache-Speicher geöffneten Speicherort ab.

@abdulakhatov-dev
@AbdulakhatovDev

Das obige ist der detaillierte Inhalt vonServicemitarbeiter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn