Skip to content

Service Worker

Der Service Worker ist ein optionaler Browser-Runtime-Cache für bereits angeforderte statische Ressourcen derselben Origin. Das Modul ist standardmäßig deaktiviert.

Der Service Worker ist verfügbar bei:

  • HTTPS,
  • localhost und *.localhost,
  • 127.x.x.x,
  • ::1.

Der Worker wird dynamisch über WordPress ausgeliefert:

/fg-performance-sw.js?v=<cache-version>

Bei WordPress in einem Unterverzeichnis wird der Pfad entsprechend der Home-URL gebildet. Der Response enthält unter anderem Cache-Control: no-store und Service-Worker-Allowed für den ermittelten Scope.

Der aktuelle Code akzeptiert ausschließlich die Request-Destinations:

  • style
  • script
  • font
  • image

Die Strategie ist fest stale-while-revalidate.

Es gibt kein Precache. Eine Ressource wird erst verarbeitet, nachdem die Website sie selbst angefordert hat.

Der Worker verarbeitet keine Anfrage, wenn unter anderem einer der folgenden Fälle vorliegt:

  • Request-Methode ist nicht GET,
  • Request-Destination gehört nicht zu den vier statischen Zielen,
  • Request verwendet cache = no-store,
  • URL ist Cross-Origin oder außerhalb des Service-Worker-Scopes,
  • Ziel ist wp-login.php, wp-admin oder darunter.

Eine Response wird nicht in den FG-Cache übernommen, wenn sie unter anderem:

  • nicht erfolgreich mit HTTP 200 ist,
  • opaque ist,
  • von einer anderen Origin stammt,
  • Cache-Control: no-store oder private enthält,
  • Vary: * oder Vary: Cookie enthält,
  • text/html oder application/json als Content-Type enthält,
  • bei vorhandenem Content-Length das konfigurierte Größenlimit überschreitet.

Damit ist der Worker nicht als HTML-, Navigation-, REST- oder AJAX-Cache ausgelegt.

Standardwerte:

  • maximal 100 Einträge,
  • maximal 10 MiB pro Response, sofern Content-Length vorhanden ist.

Das Maximum wird nach jeder erfolgreichen Cache-Aktualisierung begrenzt, indem überschüssige Einträge aus der von Cache Storage gelieferten Key-Liste entfernt werden.

Requests mit cache = reload oder cache = no-cache lesen nicht aus dem vorhandenen FG-Cache. Eine erfolgreiche Netzwerkantwort kann den Cache anschließend aktualisieren.

Vor der Registrierung prüft FG Performance eine bereits vorhandene Registration im gleichen Scope. Wenn deren aktiver, wartender oder installierender Worker nicht fg-performance-sw.js in der Script-URL enthält, registriert FG Performance seinen Worker nicht automatisch darüber.

Wenn das Modul nach vorheriger Aktivierung ausgeschaltet wurde, fügt FG Performance im Frontend ein Cleanup-Script ein. Dieses entfernt die eigene Registration und Browser-Caches mit dem Prefix:

fg-performance-static-

Vor vollständiger Plugin-Deaktivierung sollte das Modul deshalb zuerst deaktiviert und das Frontend einmal geladen werden.

Das Modul hört auf den Filter fg_static_export_additional_files. Bei aktiviertem Service Worker kann es fg-performance-sw.js als zusätzliche Exportdatei ergänzen, wenn der Export-Kontext ein gültiges HTTPS-Ziel oder eine lokale Entwicklungs-URL enthält.

FG Static Export ist im aktuellen Code keine Pflichtabhängigkeit.