Was sind “Servicekräfte” und wie arbeiten sie?
Ein Service Worker ist ein Javascript-Prozess, der im Hintergrund des Browsers läuft.
Der Service Worker läuft im Hintergrund und fungiert als eine Art Proxy zwischen der Website und dem Internet und kann Netzwerkanfragen abfangen und manipulieren.

Service Worker haben (fast) “nur” Einfluss auf die Dateien, die auf der Website angefordert werden. Zum Beispiel können JS- und CSS-Dateien direkt aus einem Cache geliefert werden, auch wenn der Server andere Header ausgibt.
Wenn eine zweite Seite der Paginierung angefordert wird, kann ein Service Worker auch das gespeicherte HTML der ersten Seite zurückgeben und dort nur die Produkte austauschen. Der Service Worker kann dann die Daten der Produkte über einen kleineren, schnelleren Ajax-Aufruf anfordern.
Eine andere Möglichkeit ist, eine optimierte Version vom Server unter der gleichen Bild-URL anstelle eines Originalbildes auf mobilen Geräten zurückzugeben.
Beispiel für einen Servicearbeiter
Wir haben eine kleine Service Worker-Testseite erstellt, um dies zu veranschaulichen:

Hier die Datei /cat1.png wird einmal angefordert. Wenn der Service Worker zum ersten Mal aufgerufen wird, wird dort eine Katze angezeigt. Wenn du die Seite zum zweiten Mal aufrufst, erhältst du für dieselbe Bild-URL das Einhorn, da der Service Worker dann im Browser aktiv ist.
Die gleiche Datei wird wie das zweite Bild mit dem Parameter /cat1.png?2 aufgerufen. Aber vor dem Aufruf müssen wir den Service Worker aktivieren. Deshalb wird hier immer das Einhorn angezeigt.
Wenn du dir den Quelltext ansiehst, wird die geladene URL nicht verändert - nur ihr Inhalt.
Erst nach einem komplett neuen Aufruf im Inkognito-Modus (komplett schließen und wieder öffnen) siehst du das Verhalten vom ersten Aufruf wieder.
Was ist die Aufgabe von Servicekräften?
Die Einsatzbereiche für Servicekräfte sind vielfältig. Die häufigsten Einsatzgebiete sind:
- Speicherung von Inhalten, um sie offline verfügbar zu machen (z. B. als Teil einer PWA)
- Optimierung der Ladezeiten
- Empfang von Push-Benachrichtigungen
Wann sind Servicekräfte aktiv?
Service Worker werden über Javascript installiert. Bei der ersten Anfrage für eine Domain (die allerdings vorher nicht aufgerufen worden sein darf) können sie nicht aktiv sein. Sobald der Service Worker installiert ist, steht er für weitere Aufrufe der Domain zur Verfügung.
Es gibt auch die Möglichkeit (die wir auch im Beispiel genutzt haben), dass Service Worker/innen die Assets beim ersten Aufruf einer Seite beeinflussen können, nachdem sie aktiviert worden sind.
Wie kann ich herausfinden, ob ein Dienstleistender aktiv ist?
In den Google Chrome Developer Tools unter Anwendung-> Service Workers kannst du die aktiven Service Worker sehen:

Und im Netzwerk-Bereich könnt ihr anhand von kleinen Zahnrädern die Requests finden, die durch einen Service Worker ausgelöst wurden:

Wie geht Google mit Servicekräften um?
Wir haben Google angewiesen, unsere Testseite einmal mit dem URL-Check zu rendern. Auch wenn der Check von modernizr.com besagt, dass der Browser Service Worker unterstützt, wurde der Service Worker nicht installiert oder aktiviert. Wir konnten keinen Zugriff von Googlebot auf die JS-Datei des Service Workers feststellen.

Man kann auch davon ausgehen, dass Googlebot aktuell (noch) keinen Service Worker unterstützt.
Welchen Einfluss haben die Servicekräfte dann auf die Arbeit eines SEOs?
Service Worker können im Hintergrund (ab dem zweiten Aufruf) Änderungen an der HTML der aufgerufenen Seite vornehmen. So können z. B. Titel-Tags, Canonicals oder Robots-Tags entfernt oder aus Gründen des Caching geändert werden. Wenn du dann den Quelltext der Seite aufrufst, sieht es in der Antwort des Servers so aus, als wäre das der Fall. Aber Google sieht hier etwas ganz anderes.
Martin Splitt von Google berichtete auf der “Better Together”-Konferenz von Ryte auch über einen Problemfall, bei dem die gesamte Website ohne Servicekräfte nicht funktionierte. Mehr Informationen dazu findest du in einem Blogbeitrag von Demir Jasarevic
Du kannst das Problem selbst beheben, indem du die Seite im “frischen” Inkognito-Modus aufrufst und sie überprüfst, oder indem du den Service Worker über die Chrome Erweiterung während einer Prüfung.