InstallEvent: addRoutes() Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Die addRoutes()
-Methode der InstallEvent
-Schnittstelle spezifiziert eine oder mehrere statische Routen, die Regeln für das Abrufen bestimmter Ressourcen definieren, die verwendet werden, noch bevor der Service Worker gestartet wird. Dies ermöglicht Ihnen beispielsweise, einen Service Worker zu umgehen, in Fällen, in denen Sie immer eine Ressource aus dem Netzwerk oder einem Browser-Cache
abrufen möchten, und vermeidet die Leistungsbelastung unnötiger Service Worker-Zyklen.
Syntax
addRoutes(routerRules)
Parameter
routerRules
-
Ein einzelnes Objekt oder ein Array von einem oder mehreren Objekten, die Regeln dafür repräsentieren, wie bestimmte Ressourcen abgerufen werden sollen. Jedes
routerRules
-Objekt enthält die folgenden Eigenschaften:condition
-
Ein Objekt, das eine oder mehrere Bedingungen definiert, die spezifizieren, welche Ressourcen mit dieser Regel übereinstimmen sollen. Die folgenden Eigenschaften können enthalten sein; wenn mehrere Eigenschaften verwendet werden, muss eine Ressource alle angegebenen Bedingungen erfüllen, um der Regel zu entsprechen.
not
Optional-
Ein
condition
-Objekt, das Bedingungen definiert, die ausdrücklich nicht erfüllt sein dürfen, um der Regel zu entsprechen. Bedingungen, die in einernot
-Bedingung definiert sind, sind gegenseitig ausschließend mit anderen Bedingungen. or
Optional-
Ein Array von
condition
-Objekten. Ein Satz dieser definierten Bedingungen muss erfüllt sein, um der Regel zu entsprechen. Bedingungen, die in eineror
-Bedingung definiert sind, sind gegenseitig ausschließend mit anderen Bedingungen. requestMethod
Optional-
Ein String, der die HTTP-Methode repräsentiert, mit der eine Anfrage gesendet werden soll, um der Regel zu entsprechen, wie z.B.
"get"
,"put"
oder"head"
. requestMode
Optional-
Ein String, der den Modus darstellt, den eine Anfrage haben soll, um der Regel zu entsprechen, zum Beispiel
"same-origin"
,"no-cors"
oder"cors"
. requestDestination
Optional-
Ein String, der das Ziel einer Anfrage repräsentiert, d.h. welcher Inhaltstyp angefordert werden soll, damit er der Regel entspricht. Beispiele sind
"audio"
,"document"
,"script"
und"worker"
. runningStatus
Optional-
Ein enumerierter Wert, der den erforderlichen Betriebsstatus des Service Workers für eine Anfrage darstellt, um der Regel zu entsprechen. Werte können
"running"
oder"not-running"
sein. urlPattern
Optional-
Eine
URLPattern
-Instanz oder einURLPattern()
-Konstruktor-input
-Muster, das die URLs darstellt, die der Regel entsprechen.
source
-
Ein enumerierter Wert oder ein Objekt, das die Quelle angibt, aus der übereinstimmende Ressourcen geladen werden. Mögliche enumerierte Werte sind:
"cache"
-
Ressourcen werden aus einem Browser-
Cache
geladen. "fetch-event"
-
Ressourcen werden über den
fetch
-Event-Handler des Service Workers geladen. Dies kann mit der"runningStatus"
-Bedingung kombiniert werden, um Ressourcen von einem Service Worker zu laden, wenn er läuft, und auf eine statische Route im Netzwerk zurückzugreifen, wenn nicht. "network"
-
Ressourcen werden von dem Netzwerk geladen.
"race-network-and-fetch-handler"
-
Es wird versucht, Ressourcen sowohl vom Netzwerk als auch vom
fetch
-Event-Handler des Service Workers gleichzeitig zu laden. Die zuerst abgeschlossene Quelle wird verwendet.
Der
source
-Wert kann auch auf ein Objekt gesetzt werden, das eine einzelne Eigenschaft,cacheName
, enthält, deren Wert ein String ist, der den Namen eines Browser-Cache
darstellt. Übereinstimmende Ressourcen werden aus diesem spezifisch benannten Cache geladen, wenn er existiert.
Rückgabewert
Ein Promise
, das mit undefined
erfüllt wird.
Ausnahmen
TypeError
DOMException
-
Wird ausgelöst, wenn eines oder mehrere der Regelnobjekte innerhalb von
routerRules
ungültig sind oder einensource
-Wert von"fetch-event"
haben, wenn der zugehörige Service Worker keinenfetch
-Event-Handler hat. Ebenfalls ausgelöst, wenn Sie versuchen,or
mit einem anderen Bedingungstyp zu kombinieren.
Beispiele
Spezifische Anfragen an das Netzwerk leiten, wenn der Service Worker nicht läuft
Im folgenden Beispiel werden URLs, die mit /articles
beginnen, an das Netzwerk geleitet, wenn der Service Worker derzeit nicht läuft:
addEventListener("install", (event) => {
event.addRoutes({
condition: {
urlPattern: "/articles/*",
runningStatus: "not-running",
},
source: "network",
});
});
Formular-POST-Anfragen direkt an das Netzwerk leiten
Im folgenden Beispiel werden POST
-Anfragen an ein Formular direkt an das Netzwerk gesendet und umgehen den Service Worker:
addEventListener("install", (event) => {
event.addRoutes({
condition: {
urlPattern: "/form/*",
requestMethod: "post",
},
source: "network",
});
});
Bestimmte Bildtypen-Anfragen an einen benannten Cache leiten
Im folgenden Beispiel wird der Browser-Cache
namens "pictures"
verwendet, um Dateien mit den Erweiterungen .png
oder .jpg
abzurufen:
addEventListener("install", (event) => {
event.addRoutes({
condition: {
or: [{ urlPattern: "*.png" }, { urlPattern: "*.jpg" }],
},
source: {
cacheName: "pictures",
},
});
});
Hinweis: Wenn der Cache nicht existiert, weicht der Browser auf die Nutzung des Netzwerks aus, sodass die angeforderten Ressourcen dennoch abgerufen werden können, sofern das Netzwerk verfügbar ist.
Sie können or
nicht mit einer anderen Bedingung kombinieren — dies führt zu einem TypeError
. Wenn Sie beispielsweise Dateien mit den Erweiterungen .png
oder .jpg
nur dann abgleichen möchten, wenn die requestMethod
get
ist, müssen Sie zwei separate Bedingungen angeben:
addEventListener("install", (event) => {
event.addRoutes(
{
condition: {
urlPattern: "*.png",
requestMethod: "get",
},
source: {
cacheName: "pictures",
},
},
{
condition: {
urlPattern: "*.jpg",
requestMethod: "get",
},
source: {
cacheName: "pictures",
},
},
);
});
Spezifikationen
Specification |
---|
Service Workers # register-router-method |
Browser-Kompatibilität
Siehe auch
InstallEvent
install
event- Service Worker API
- Use the Service Worker Static Routing API to bypass the service worker for specific paths auf
developer.chrome.com
(2024)